数值积分与数值微分实验报告
实验4_数值积分与数值微分
![实验4_数值积分与数值微分](https://img.taocdn.com/s3/m/47d658e4524de518964b7d17.png)
数值分析实验报告四数值积分与数值微分实验(2学时)一 实验目的1.掌握复化的梯形公式、Simpson 公式等牛顿-柯特斯公式计算积分。
2. 掌握数值微分的计算方法。
二 实验内容1. 用复化梯形公式计算积分。
⎰90dx x M=82. 用复化Simpson 公式计算积分。
⎰90dx x M=8 3. 给定下列表格值利用四点式(n=3)求)50()50('''f f 和的值。
三 实验步骤(算法)与结果1复化梯形公式用C 语言编程如下:#include<stdio.h>#include<math.h>/*被积函数的定义*/float f(float x){float y;y=sqrt(x);return y;}void main(){int i,m;float a,b,h,r;printf("输入等分数m:" );scanf("%d",&m);printf("输入区间左端点a的值:"); scanf("%f",&a);printf("输入区间右端点b的值:"); scanf("%f",&b);float x[m+1];h=(b-a)/m;for(i=0;i<=m;i++)x[i]=a+i*h;r=0;for(i=0;i<=m;i++){if(i==0) r=r+h*0.5*f(x[i]);if(i>0&&i<m) r=r+h*f(x[i]);if(i==m) r=r+0.5*h*f(x[i]);}printf("输出区间[%3.1f %3.1f]的积分值:%f\n",a,b,r); }求解结果如下:输入等分数m:8输入区间左端点a的值:0输入区间右端点b的值:9输出区间[0.0 9.0]的积分值:17.7695142复化Simpson公式用C语言编程如下:#include<stdio.h>#include<math.h>/*被积函数的定义*/float f(float x){float y;y=sqrt(x);return y;}void main(){int i,m;float a,b,h,r;printf("输入等分数m:" );scanf("%d",&m);printf("输入区间左端点a的值:"); scanf("%f",&a);printf("输入区间右端点b的值:"); scanf("%f",&b);float x[m+1];h=(b-a)/m;for(i=0;i<=m;i++)x[i]=a+i*h;r=0;for(i=0;i<=m;i++){if(i==0) r=r+h*f(x[i])/3;if(i>0&&i<m){ if(i%2==0)r=r+h*2*f(x[i])/3; else r=r+h*4*f(x[i])/3;}if(i==m) r=r+h*f(x[i])/3;}printf("输出区间[%3.1f %3.1f]的积分值:%f\n",a,b,r); }求解结果如下:输入等分数m:8输入区间左端点a的值:0输入区间右端点b的值:9输出区间[0.0 9.0]的积分值:17.9031393求导数值用C语言编程如下:#include<stdio.h>int n;/*拉格朗日多项式函数的一阶导函数的定义*/float g1(float *x,float *y,float z){int i,j,k;float r,m,s;s=0;for(i=0;i<n;i++){ m=0;for(j=0;j<n;j++){if(j!=i){ r=1;for(k=0;k<n;k++)if(k!=i&&k!=j) r=r*(z-x[k]); m=m+r*y[i];}}r=1;for(j=0;j<n;j++)if(j!=i)r=r*(x[i]-x[j]);s=s+m/r;}return s;}/*拉格朗日多项式函数的二阶导函数的定义*/ float g2(float *x,float *y,float z){int i,j,k,p;float r,m,s,w;s=0;for(i=0;i<n;i++){w=0;for(j=0;j<n;j++){if(j!=i){m=0;for(k=0;k<n;k++){if(k!=i&&k!=j){ r=1;for(p=0;p<n;p++)if(p!=k&&p!=j&&p!=i)r=r*(z-x[p]); m=m+r*y[i];}}w=w+m;}}r=1;for(j=0;j<n;j++)if(j!=i)r=r*(x[i]-x[j]);s=s+w/r;}return s;}void main(){int i,j;float f1,x0,f2;printf("输入节点数n:");scanf("%d",&n);float x[n],y[n];printf("输入向量x:");for(i=0;i<n;i++)scanf("%f",&x[i]);printf("输入向量y:");for(i=0;i<n;i++)scanf("%f",&y[i]);printf("********************\n"); printf("输入1****求一阶导数\n"); printf("输入2****求二阶导数\n"); printf("********************\n"); printf("选择操作1-2:");scanf("%d",&j);switch(j){case 1:printf("输入求导处的x:");scanf("%f",&x0);f1=g1(x,y,x0);printf("x=%3.1f处的一阶导数值%f\n",x0,f1); break;case 2:printf("输入求导处的x:");scanf("%f",&x0);f2=g2(x,y,x0);printf("x=%3.1f处的二阶导数值%f\n",x0,f2); break;}}求解结果如下:输入节点数n:4输入向量x:50 55 60 65输入向量y:1.6690 1.7404 1.7782 1.8129********************输入1****求一阶导数输入2****求二阶导数********************选择操作1-2:1输入求导处的x:50x=50.0处的一阶导数值0.019673输入节点数n:4输入向量x:50 55 60 65输入向量y:1.6990 1.7404 1.7782 1.8129 ********************输入1****求一阶导数输入2****求二阶导数********************选择操作1-2:2输入求导处的x:50x=50.0处的二阶导数值-0.000164。
数值分析实验报告--数值积分与数值微分及其并行算法
![数值分析实验报告--数值积分与数值微分及其并行算法](https://img.taocdn.com/s3/m/0a630ae6998fcc22bcd10d48.png)
《数值分析》实验报告实验六 数值积分与数值微分及其并行算法(一) 数值微分一实验目的:① 我们通过 Mat lab 编 来 决数值 的诸多问题 例如这次实验所涉及到得数值微分,使我们进一步学会使用Matlab 来求解复杂的数值微分积分等问题,就进而避免了手算出现的各种错误。
体会Matlab 这门课是多么方便实用 让我体会到了高数和计算方法相结合的重要性,让我更好的学习这门课。
② 并让我们熟悉Mat lab 编 环 并要熟练掌握及应用二.实验要求:会用matlab 编写代码,并把关于数值微分的题目进行结果计算,并进行误差分析,需要画图的把图形画出来。
三.实验内容:用matlab 编写出的代码进行编译运行,来做下面有关于数值微分的例子,然后再进行误差分析的出最终结论。
最后把结果和过程写在实验报告上。
四.实验题目:1.关于数值微分的:设)94^*8cos()162^*4sin()(+−−=x x x f .(1)分别利用前差公式和后差公式计算)27.0('f 的近似值和误差,取4位小数点计算,其中步长分别取1000.0,001.0,01.0,1.0=h ,≤)("x f 100,]1,0[∈x .五.实验原理:1.、数值微分中的前插公式:hx f h x f x f )()()(−+≅′ 后插公式:hh x f x f x f )()()(−−≅′ 前插公式和后插公式的截断误差公式:)()(2),(1h O f h h f R i =′′−=ξ )2,1(=i 六.设计思想:是用离散的方法近似的计算y=f(x)在某点的函数值,当然通常只有函数以离散数值形式给出时才有必要用它。
七.对应程序及实验结果:1.数值微分的程序:在工作区输入:x=0.27;h=[0.1,0.01,0.001,0.0001];M=100;x1=x+h;x2=x-h; y=sin(4.*x.^2-16)- cos(8.*x.^4+9);y1=sin(4.*x1.^2-16)- cos(8.*x.^4+9); y2=sin(4.*x2.^2-16)- cos(8.*x.^4+9); yq=(y1-y)./h, yh=(y-y2)./h,wu=abs(h.*M/2), syms x,f=sin(4.*x.^2-16)- cos(8.*x.^4+9); yx=diff(f,x)得出结果为:yq =-2.5323 -2.1998 -2.1640 -2.1604yh =-1.7509 -2.1198 -2.1560 -2.1596wu =5.0000 0.5000 0.0500 0.0050yx =8*cos(4*x^2-16)*x+32*sin(8*x^4+9)*x^3再算出截断误差:输入:x=0.27; yx =8*cos(4*x^2-16)*x+32*sin(8*x^4+9)*x^3,wuq=abs(yq-yx), wuh=abs(yh-yx)输出:yx =-1.9251wuq =0.6072 0.2748 0.2389 0.2353wuh =0.1742 0.1948 0.2309 0.2345九、实验体会:本实验中,关于数值微分方法的使用,使我个人又对前插公式有了新的一种理念,让我记的更加牢固。
mat实验7 数值微分和数值积分(2)
![mat实验7 数值微分和数值积分(2)](https://img.taocdn.com/s3/m/8e4a3f7aa417866fb84a8e73.png)
MATLAB 程序设计实验7数值微分和数值积分姓名:班级:电信1105学号:********2014.6.13一、实验目的1.掌握微分的数值计算方法。
2.掌握积分的数值计算方法。
二、实验内容1、求定积分。
a)20sin xI dx x=⎰b) ()()12201160.30.010.90.04I dx x x ⎡⎤=--⎢⎥-+-+⎢⎥⎣⎦⎰ 解:代码及结果如下:function yp=test(x) yp=sin(x)./x;>> [I,err]=quadgk(@test,0,2) I = 1.6054err = 8.0491e-17function yp=test(x)yp=((1./((x-0.3).^2+0.01)-1./((x-0.9).^2+0.04))-6);>> [S,n]=quadl(@test,0,1,10^-10,0) S = 11.7006 n = 7682、求二重定积分。
A)()()112200exp I x y dxdy =-+⎰⎰B)()0cos I x y dxdy ππ=+⎰⎰解:代码及结果如下:>> fx=inline('exp(-(x.^2+y.^2))','x','y'); >> dblquad(fx,0,1,0,1,10^-10) ans = 0.5577>> fx=inline('abs(cos(x+y))','x','y'); >> dblquad(fx,0,pi,0,pi,10^-10) ans = 6.28323、分别用矩形、梯形公式计算表1中数据给出的定积分,()1.50.3I f x dx =⎰。
解:代码及结果如下: >> x=0.3:0.2:1.5;>> y=[0.3895 0.6598 0.9147 1.1611 1.3971 1.6212 1.8325]; >> trapz(x,y) ans = 1.3730设x 由[]π2:0区间内均匀分布的10个点组成,求向量x sin 的1~3阶差分。
实验四数值微积分实验报告
![实验四数值微积分实验报告](https://img.taocdn.com/s3/m/284ee3624a35eefdc8d376eeaeaad1f3469311b7.png)
实验四数值微积分实验报告实验四:数值微积分实验目的:1. 熟悉数值微积分的基本概念和方法;2. 学习使用Python进行数值积分和数值微分的计算;3. 掌握积分和微分的误差分析。
实验仪器:计算机、Python编程环境实验原理:1. 数值微积分是一种使用数值近似计算积分和微分的方法,适用于无法用解析方法求解的函数,或是为了简化计算过程而采用的方法。
2. 数值积分的常用方法有矩形法、梯形法和辛普森法等。
其中,矩形法是通过将区间分成若干小矩形来近似计算积分值;梯形法是通过将区间分成若干小梯形来近似计算积分值;辛普森法是通过将区间分成若干小曲线来近似计算积分值。
3. 数值微分的常用方法有中心差分法和向前差分法等。
其中,中心差分法是通过用相邻两点的斜率的平均值来近似计算导数值;向前差分法是通过用当前点和下一个点的斜率来近似计算导数值。
实验步骤:1. 导入Python所需的库和模块;2. 编写函数f(x),表示待求解的函数;3. 编写函数rectangular_rule(f, a, b, n),实现矩形法求积分;4. 编写函数trapezoidal_rule(f, a, b, n),实现梯形法求积分;5. 编写函数simpsons_rule(f, a, b, n),实现辛普森法求积分;6. 编写函数central_difference(f, x, h),实现中心差分法求导数;7. 编写函数forward_difference(f, x, h),实现向前差分法求导数;8. 调用以上函数,分别计算给定函数的积分和导数,并对结果进行误差分析;9. 打印输出实验结果。
实验结果:给定函数f(x):f(x) = x^3 + 2x^2 - 3x + 1使用矩形法计算积分,取n=1000,得到积分值为:-1.155使用梯形法计算积分,取n=1000,得到积分值为:-1.156使用辛普森法计算积分,取n=1000,得到积分值为:-1.155使用中心差分法计算导数,取x=1.0,h=0.001,得到导数值为:6.0使用向前差分法计算导数,取x=1.0,h=0.001,得到导数值为:4.0实验结论:1. 数值微积分是一种有效的数值计算方法,适用于无法用解析方法求解的函数;2. 在积分计算中,不同的数值积分方法会得到略有不同的结果,但结果误差一般很小;3. 在数值微分中,中心差分法的结果更加精确,但计算量较大;4. 数值微积分的误差分析是一个重要的环节,需要对结果进行误差评估和控制。
数值分析积分实验报告(3篇)
![数值分析积分实验报告(3篇)](https://img.taocdn.com/s3/m/0c53ac55a22d7375a417866fb84ae45c3b35c287.png)
第1篇一、实验目的本次实验旨在通过数值分析的方法,研究几种常见的数值积分方法,包括梯形法、辛普森法、复化梯形法和龙贝格法,并比较它们在计算精度和效率上的差异。
通过实验,加深对数值积分理论和方法的理解,提高编程能力和实际问题解决能力。
二、实验内容1. 梯形法梯形法是一种基本的数值积分方法,通过将积分区间分割成若干个梯形,计算梯形面积之和来近似积分值。
实验中,我们选取了几个不同的函数,对积分区间进行划分,计算积分近似值,并与实际积分值进行比较。
2. 辛普森法辛普森法是另一种常见的数值积分方法,它通过将积分区间分割成若干个等距的区间,在每个区间上使用二次多项式进行插值,然后计算多项式与x轴围成的面积之和来近似积分值。
实验中,我们对比了辛普森法和梯形法的计算结果,分析了它们的精度差异。
3. 复化梯形法复化梯形法是对梯形法的一种改进,通过将积分区间分割成多个小区间,在每个小区间上使用梯形法进行积分,然后计算所有小区间积分值的和来近似积分值。
实验中,我们对比了复化梯形法和辛普森法的计算结果,分析了它们的精度和效率。
4. 龙贝格法龙贝格法是一种通过外推加速提高计算精度的数值积分方法。
它通过比较使用不同点数(n和2n)的积分结果,得到更高精度的积分结果。
实验中,我们使用龙贝格法对几个函数进行积分,并与其他方法进行了比较。
三、实验步骤1. 编写程序实现梯形法、辛普森法、复化梯形法和龙贝格法。
2. 选取几个不同的函数,对积分区间进行划分。
3. 使用不同方法计算积分近似值,并与实际积分值进行比较。
4. 分析不同方法的精度和效率。
四、实验结果与分析1. 梯形法梯形法在计算精度上相对较低,但当积分区间划分足够细时,其计算结果可以接近实际积分值。
2. 辛普森法辛普森法在计算精度上优于梯形法,但当积分区间划分较细时,计算量较大。
3. 复化梯形法复化梯形法在计算精度上与辛普森法相当,但计算量较小。
4. 龙贝格法龙贝格法在计算精度上优于复化梯形法,且计算量相对较小。
实验六-数值积分与数值微分
![实验六-数值积分与数值微分](https://img.taocdn.com/s3/m/117ab594c850ad02df8041bc.png)
13
Matlab基础(实验二)
1. 矩阵输入 2. 特殊矩阵 3. 误差分析 4. 内置函数
2021/4/21
14
矩阵输入
>> a=[]
%建立空矩阵a ,可在workspace中编辑
>> a=[1,2,3;4 5 6] % [分行“,”或空格 分列 “;” ]
>> a=1:5
% 建立1×5矩阵(向量) a=(1,2,3,4,5)’
2021/4/21
8
符号解
1. vpa 控制运算精度
vpa(表达式,运算精度)
>> vpa(pi,20)
%显示至100位有效数字
2. solve 方程的符号解
solve( '表达式' , 'x')
2021/4/21
9
符号解
例 解方程 x3 sin x 12x 1 0 2x3 x 1 0
% 取a第3行,取a第二列
>> a(:,2)
% 取a第2列
>> b=a([1,3],3:5)
%取a的1,2行,2,4,5列元
>> [m,n]=size(a) >> b=a(end,:)
%输出a的行列数m、n % b取a的最后一行
2021/4/21
20
矩阵操作
>> a=1:36; a=reshape(a,6,6); t=toeplitz(0:-1:-5,0:5);
>> x=a\r,a*x
% x=a\r=inv(a)*r=a^(-1)*r
>> c=a'
% a'= a的(共轭)转置
实验二 数值积分实验
![实验二 数值积分实验](https://img.taocdn.com/s3/m/52fe1656f01dc281e53af02a.png)
实验二数值积分实验一. 实验目的(1)熟悉数值积分与数值微分方法的基本思想,加深对数值积分与数值微分方法的理解。
(2)熟悉Matlab编程环境,利用Matlab实现具体的数值积分与数值微分方法。
二. 实验要求用Matlab软件实现复化梯形方法、复化辛甫生方法、龙贝格方法和高斯公式的相应算法,并用实例在计算机上计算。
三.实验内容1. 实验题目已知x(-+=的数据表)1xef x4sin Array分别编写用复化梯形法、复化辛甫生公法、龙贝格法、三点高斯法求积分⎰=10)(dxfIx近似值的计算机程序。
2. 设计思想1.复化Simpson公式:设计Simpson公式,即为设计含有3个节点(即为3阶精度)的Newton-Cotes 公式。
将区间划分为3等份,选取等分点作为求积节点构造求积公式,具有三阶精度的Simpson公式。
将区间[a,b]划分为n等分,步长为h=(b-a)/n,等分点xi=a+i*h,i=0,1,2,3…。
设计复化求积法,先用低阶求积公式求得每个子段上的积分值,然后再将它们累加求和,用各段积分之和作为所求积分的近似值。
即设计出复化Simpson公式。
2.复化梯形公式:将区间[a,b]划分为n等分,步长为h=(b-a)/n,等分点xi=a+i*h,i=0,1,2,3…。
设计复化求积法,先用低阶求积公式求得每个子段上的积分值,然后再将它们累加求和,用各段积分之和作为所求积分的近似值。
再根据梯形公式即可设计出复化梯形公式。
3.Romberg公式:再加工Cotes值。
将积分区间[a,b]划分为8等份,等分点xi=a+i*(b-a)/8,i=0,1,2…,8,则二分前后的Cotes值可求,再对求得的Cotes公式进行松弛,提高精度,设计出Romberg公式。
4.三点Gauss公式:根据Newton-Cotes公式,但对求积节点自由选择,适当选取待定参数使公式具有高精度,即设计出Gauss公式。
实验三 数值积分与数值微分
![实验三 数值积分与数值微分](https://img.taocdn.com/s3/m/f3c8620d844769eae009ed18.png)
实验三数值积分与数值微分一、实验目的:工程应用中更会常用到积分,但是,对于f(x)不是连续函数,或者不解析,或者不能用初等函数表示或者说原函数很难积分求。
所以在积分应用中我们构造一种方法可以避免要求原函数的计算,即NEWTON-COTES积分公式和1/3SIMPSON公式。
数值积分的基本思想是用被积函数f(x)在积分区间【a,b】上某些点处的函数值的线性组合来近似代替定积分。
二、计算公式NEWTON-COTES积分公式:I=h/2*(f(1)+f(n+1)+2(f(2)+f(3)+(f4)+…(fn)));h=b-a/2; x(i)=a+(i-1)*h; f(i)=f(x(i));1/3SIMPSON积分公式:I=h/3*(f(1)+f(n+1)+4f((2)+f(4)+f(6)+…+f(n)+2(f(3)+f(5)+f(7)+…+f(n-1)));h=b-a/n; f(i)=f(a+(i-1)*h).三、实验程序设计:(1)1、SIMPSON公式积分程度设计:运行结果:2、NEWTON_COTES公式程序设计:注:function y=fun_es(x); y=0.5.*exp(x./3)-x.^2.*sin(x); 运行结果:(2)1、SIMPSON公式积分程度设计:Iexact=0.9460831;a=0;b=1;n=1;for k=1:8,n=2*n;h=(b-a)/n;i=1:n+1;x=a+(i-1)*h;if x= =0f(i)=0;else f(i)=sin(x(i))/x(i);I=(h/3)*(f(1)+4*sum(f(2:2:n))+f(n+1));if n>2,I=I+(h/3)*2*sum(f(3:2:n));endendfprintf(' %3.0f %10.5f %10.5f\n',n,I,Iexact-I); end运行结果:2、NETON_COTES公式程序设计:Iexact=0.9460831;a=0;b=1;n=1;for k=1:8n=2*n;h=(b-a)/n;i=1:n+1;x=a+(i-1)*h;if x= =0f(i)=0;else f(i)=sin(x(i))/x(i);I=trapez_v(f,h);fprintf(' %4.0f %10.5f %10.5f\n',n,I,Iexact-I);endend注:function y=fun_es(x); y=0.5.*exp(x./3)-x.^2.*sin(x);运行结果:四、实验分析从上面的两个程序运行结果我们可以看出,不同的积分式子可以通过用不同的方法来实现积分,而且,对于每个公式的特点可以选择最合适区间少快读接近真值的方法。
实验六-数值积分-数值分析-实验报告
![实验六-数值积分-数值分析-实验报告](https://img.taocdn.com/s3/m/2fe59f0e6294dd88d1d26b1e.png)
实验六-数值积分-数值分析-实验报告山西大学计算机与信息技术学院实验报告姓名学号班级 08 计科课程名称计算方法实验日期 2021 年 12 月6 日实验名称实验六数值积分成绩一、实验目的利用复化梯形公式,复化辛普生公式和龙贝格数值积分公式计算a( )b_f _ d的近似值。
二、实验方法(1)将[a,b]区间 n 等分,记分点为 ,( , 0,1,..., )ib a_ a ih h i nn,并在每个小区间[1,i i_ _]上应用梯形公式11[ ( ) 2 ( ) ( )]2nn iihT f a f _ f b(2)在每个小区间[1,i i_ _]上应用辛普生公式1 111 12[ ( ) 4 ( )2 ( ) ( )]6n nn iii ihS f a f _ f _ f b式中,12i_为[1,i i_ _]的中点,即1212ii_ _ h。
(3)先用梯形公式计算 ( )/ 2_[ ( ) ( )]iT b a f a f b ,然后,将求积区间(a,b)逐次折半的方法,令区间长度 ( )/ 2 ( 0,1,2....)ih b a i 。
计算211/ 2_/ 2_( _( 1/ 2))nn nkT T h f a h k,式中 2 i n 。
于是,得到辛普生公式2 2( )/3n n n nS T T T。
科特斯求积公式2 2( )/15n n n nC S S S最后,得到龙贝格求积公式2 2( )/63n n n nR C C C利用上述各式计算,直到相邻两次的积分结果之差满足精度要求。
三、实验内容利用复化梯形公式,复化辛普生公式和龙贝格数值积分公式计算221__e _e d 和12041_d_的近似值,要求误差为71_102,将计算结果与精度值比较,并对计算结果进行分析。
四、实验程序#include“stdio.h” #include“math.h”#include“iostream.h” #include“iomanip.h”doublef1(double _) {return __e_p(_); } double f2(double _) {return 4/(1+___); } //.............梯形公式..............................doubleT(double a,double b,int n) {double _[20__00];double h=(b-a)/n;for(int i=0;i<n;i++) {_[i]=a+i_h;}double m=0;for(i=1;i<=n-1;i++) {m=m+f1(_[i]);}return h/2_(f1(a)+2_m+f1(b)); } void teT {int a=1,o=0;double q=T(1,2,a);while(fabs(w-q)>0.00000005){o++;a=a_2;q=T(1,2,a);w=T(1,2,2_a);}printf(“%d”,o);printf(“T=%15.10f”,T(1,2,2_a)); } double T1(double a,double b,int n) {double _[10000];double h=(b-a)/n;for(int i=0;i<n;i++){_[i]=a+i_h;}double m=0;for(i=1;i<=n-1;i++){m=m+f2(_[i]);}return h/2_(f2(a)+2_m+f2(b)); } void teT1 {int b=1,p=0;double d=T1(0,1,2_b);while(fabs(s-d)>0.00000005) {p++;b=b_2;s=T1(0,1,b);d=T1(0,1,2_b);}printf(“\n%d”,p);printf(“T1=%15.10f”,T1(0,1,b)); }//......................辛普生公式........................................double S(double a,double b,int n){double h=(b-a)/n;double s=f1(a)-f1(b);double _;_=a;for(int i=0;i<n;i++){_=_+h/2;s=s+4_f1(_);_=_+h/2;s=s+2_f1(_);}s=s_h/6;return s; } void teS{int c=1,l=0;double g=S(1,2,c);double h=S(1,2,2_c);while(fabs(h-g)>0.00000005){l++;c=c_2;g=S(1,2,c);h=S(1,2,2_c);}printf(“\n%d”,l);printf(“S=%15.10f”,S(1,2,c)); } double S1(double a,double b,int n){double h=(b-a)/n;double s=f2(a)-f2(b);double _;_=a;for(int i=0;i<n;i++){_=_+h/2;s=s+4_f2(_);_=_+h/2;s=s+2_f2(_);}s=s_h/6;return s; } void teS1{int m=1,v=0;double j=S1(0,1,m);double k=S1(0,1,2_m);while(fabs(k-j)>0.00000005){v++;m=m_2;j=S1(0,1,m);k=S1(0,1,2_m);}printf(“\n%d”,v);printf(“S1=%15.10f\n”,S1(0,1,m)); }//.................龙贝格公式...........................voidL(double a,double b){double h=b-a;double t1=(f1(a)+f1(b))_h/2,t2; int k=1;double d=0;double r1=0,r2=1;double c1,c2;double s1=0,_,s2;while(1){if(fabs(r2-r1)<0.00000005) break ;s1=0;_=a+h/2;while(_<b){s1=s1+f1(_);_=_+h;}t2=t1/2+h/2_s1;s2=t2+1/3_(t2-t1);if(k==1){k=k+1;h=h/2;t1=t2;continue;}c2=s2+1/15_(s2-s1);if(k==2){c1=c2;k=k+1;h=h/2;t1=t2;s1=s2;continue;}r1=d;r2=c2+1/63_(c2-c1);if(k==3){d=r2;c1=c2;h=h/2;k=1;t1=t2;s1=s2; continue;}}printf(“L=%15.10f\n”,r2); } void main{ teT;teT1;teS;teS1;L(1,2); } 五、实验结果六、结果分析在对积分区间作同样分割或利用同样个数的函数值的条件下,复化辛普生公式比复化梯形公式的计算精度高。
数值积分与数值微分
![数值积分与数值微分](https://img.taocdn.com/s3/m/98f554a8284ac850ad02423e.png)
数值积分与数值微分
实验5.1 (高斯数值积分方法用于积分方程求解)
问题提出:线性的积分方程的数值求解,可以被转化为线性代数方程组的求解问题。
而线性代数方程组所含未知数的个数,与用来离散积分的数值方法的节点个数相同。
在节点数相同的前提下,高斯数值积分方法有较高的代数精度,用它通常会得到较好的结果。
实验内容:选用复合梯形公式,复合Simpson 公式,变步长梯形法,Romberge 积分法,Gauss 积分计算
(1) 0e cos x I xdx π=
⎰; (I ≈-12.0703463164)
(2) 1/0I =
⎰ (I ≈0.4987111175752) (3) 10sin x I dx x =
⎰ (f(0)=1, I ≈0.9460831)
实验前的预备知识:
1、 深刻认识数值积分法的意义;
2、 明确数值积分精度与步长的关系;
3、 根据定积分的计算方法,可以考虑二重积分的计算问题。
4、 比较各种积分方法复杂度及收敛速度。
实验方法或步骤:
1、 编制数值积分算法的程序;
2、 分别用两种算法计算同一个积分 并比较其结果;
3、 分别取不同步长h=(b-a)/n,试比较计算结果(如n=10,20等);
4、 给定精度要求ε,试用变步长算法,确定最佳步长。
数值积分与数值微分实验报告
![数值积分与数值微分实验报告](https://img.taocdn.com/s3/m/8513bb8bbe23482fb5da4c99.png)
数值积分与数值微分实验报告-CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIAN实验三 数值积分程序设计算法1)实验目的通过本次实验熟悉并掌握各种数值积分算法及如何在matlab 中通过设计程序实现这些算法,从而更好地解决实际中的问题。
2)实验题目给出积分 dx x I ⎰-=32211 1.用Simpson 公式和N=8的复合Simpson 公式求积分的近似值.2.用复合梯形公式、复合抛物线公式、龙贝格公式求定积分,要求绝对误差为 710*21-=ε,将计算结果与精确解做比较,并对计算结果进行分析。
3)实验原理与理论基础Simpson 公式 )]()2(4)([6b f b a f a f a b S +++-=复化梯形公式将定积分⎰=b a dx x f I )(的积分区间],[b a 分隔为n 等分,各节点为n j jh a x j ,,1,0, =+= na b h -=复合梯形(Trapz)公式为 ])()(2)([211∑-=++-=n j j n b f x f a f n a b T 如果将],[b a 分隔为2n 等分,而n a b h /)(-=不变,则 )]()(2)(2)([41021112b f x f x f a f n a b T n j j n j j n +++-=∑∑-=+-= 其中h j a h x x j j )21(2121++=+=+,)]()(2)(2)([41021112b f x f x f a f n a b T n j j n j j n +++-=∑∑-=+-= ∑-=-++-+=10)2)12((221n j n na b j a f n a b T n=1时,a b h -=,则)]()([21b f a f a b T +-=)0(0T = )21(22112h a f a b T T +-+=)1(0T = 若12-=k n ,记)1(0-=k T T n , ,2,1=k 12--=k a b h jh a x j +=12--+=k a b j a h x x j j 2121+=+k a b j a 2)12(-++=,则可得如下递推公式)0(0T )]()([2b f a f a b +-= ∑-=--++-+-=120001)2)12((2)1(21)(k j k k a b j a f a b k T k T k=1,2, 即为梯形递推公式。
数值分析实验课——数值积分与数值微分实验
![数值分析实验课——数值积分与数值微分实验](https://img.taocdn.com/s3/m/ce65ea95daef5ef7ba0d3c99.png)
数值分析实验报告四数值积分与数值微分实验(2学时)一 实验目的1.掌握复化的梯形公式、辛扑生公式等牛顿-柯特斯公式计算积分。
2. 会用高斯公式计算积分。
3. 掌握数值微分的计算方法。
二 实验内容1.分别用复化的梯形公式和辛扑生公式计算积分。
⎰90dx x M=4 2.给定下列表格值利用四点式(n=3)求)50()50('''f f 和的值。
三 实验步骤(算法)与结果1复化的梯形公式:()()()()01121222bM M a h h h f x dx f f f f f f b a h M -=+++++-=⎰基于上述公式,进行编程,程序代码如下:#include"stdio.h"#include"math.h"#define M 4int main(){float a=9,b=0;int i;float h;float x[M+1];float f=0;h=(a-b)/M;for(i=0;i<M+1;i++){x[i]=b+h*i;}for(i=0;i<M;i++){f=f+h/2*((sqrt(x[i]))+(sqrt(x[i+1])));}printf("\n%f\n",f);return 0;}运行结果如下:复化的辛扑生公式:()()()()01351246243323bM M a M h h f x dx f f f f f f h f f f f b ah M--=+++++++++++-=⎰基于上述公式,进行编程计算,程序代码如下: #include"stdio.h"#include"math.h"#define M 4int main(){float a=9,b=0;int i;float h;float x[M+1];float f=0;h=(a-b)/M;for(i=0;i<M+1;i++){x[i]=b+h*i;}for(i=0;i<M/2;i++){f=f+(h/3)*((sqrt(x[2*i]))+4*(sqrt(x[2*i+1]))+(sqrt(x[2*i+2]))); }printf("\n%f\n",f);return 0;}运算结果如下:2一阶和二阶数值微分公式四点式:()()()()'00123''00123211118926112302466f x y y y y h f x y y y y h ≈-+-+≈-+-基于上述公式,进行编程计算,程序代码如下: #include"stdio.h"int main(){float x[4]={50,55,60,65};float y[4]={1.6990,1.7404,1.7782,1.8129};float f1,f2;float h=x[1]-x[0];f1=(1/(6*h))*(-11*y[0]+18*y[1]-9*y[2]+2*y[3]); f2=(1/(6*h*h))*(12*y[0]-30*y[1]+24*y[2]-6*y[3]);printf("f1=%f",f1);printf("\nf2=%f",f2);return 0;}运算结果如下:四实验收获与教师评语。
实验4 数值积分与微分
![实验4 数值积分与微分](https://img.taocdn.com/s3/m/a3d51668561252d380eb6e3b.png)
数值积分
一、数值求积的基本思想 计算定积分的方法: 计算定积分的方法: 1、牛顿-莱布尼兹公式
∫
b
a
f (x)dx = F(b) − F(a)
但是求函数f(x)的原函数F(x)不一定比计算积分容易,
s in x , s i n x 2 找不到用初等函数表示的原函数。 例如函数 x
b
( n = 2: C 0 2 ) =
1 2 1 (2) (2) , C1 = , C 2 = 6 3 6
辛普森公式 代数精度 = 3
∫
b a
f ( x )dx ≈
b−a [ f ( a ) + 4 f ( a + b ) + f ( b )] 2 6
b − a 4 (4) h f (ξ ) , 余项 R[ f ] = − 180
k =0
n
称为牛顿-柯特斯求积公式,Ck(n)称为柯特斯系数 称为牛顿-柯特斯求积公式,C
特别:
1 1 ( C 01 ) = , C 1( 1 ) = n = 1: 2 b−a 2 b ∫a f ( x)dx ≈ 2 [ f (a) + f (b)]
梯形公式 代数精度 = 1
余项
f ′′(ξ) f ′′(ξ) b R[f ] = ∫ (x − a)(x − b) dx = ∫a (x − a)(x − b) dx a 2! 2! 1 3 b−a ′′(ξ ) , ξ ∈ [a , b] , h = =− h f 12 1
L n ( x ) dx =
∫ ∑
b a
n
记 Ak =
∫
b a
k =0
f ( x k ) l k ( x )dx =
数值分析课程——数值积分实验报告
![数值分析课程——数值积分实验报告](https://img.taocdn.com/s3/m/68d0cafa700abb68a982fbdc.png)
0.74718 0.946146
0.746834 0.946083
1 0
sin x x
分析:随着结点数目的增加,积分公式的代数精度逐渐增高,截断误差减小,得到的 结果也越加接近精确值。
(2) 编写 C++程序,分别用区间逐次分半的复化梯形公式和区间逐次分半的复化 Simpson 公式计算上述积分的近似值,比较它们的迭代次数。 答: 精度为 1e-6 积分函数 复化梯形公式 复化 Simpson 公式 1 (迭代次数) (迭代次数) x 0.746823 0.746825 I1 e d x 0 8 22
I1
I2
1
e
0
x
2
dx
dx
0.746824 0.946083
4 4
1 0
sin x x
分析:在相同精度要求下,龙贝格公式的迭代次数比复化梯形公式的迭代次数少,比复 化 Simpson 公式的迭代次数少,因此龙贝格公式的收敛速度比复化梯形公式的收敛速度 快,比复化 Simpson 公式的收敛速度快。
应用高阶的newtoncotes型求积公式计算积分会出现数值不稳定而低阶公式又因为积分区间步长过大使得离散误差很大然而若积分区间愈小则离散误差愈小因此为提高求积公式的精确度可以将积分区间分成若干个子区间在每个子区间上使用低阶求积公式然后将计算的结果加起来据成了复化求积公式
数值分析课程—数值积分实验报告
dx
1 0
sin x x
精度要求 1 0
6
。
(1) 编写 C++程序,分别用梯形公式、Simpson 公式和 Cotes 公式计算上述积分的近似值。 并对计算结果作一比较。 答: 梯形公式 Simpson 公式 Cotes 公式
数值积分和数值微分在物理中的应用
![数值积分和数值微分在物理中的应用](https://img.taocdn.com/s3/m/014c5069b84ae45c3b358c67.png)
实验报告实验课程名称计算物理实验项目名称数值积分和数值微分在物理中的应用年级 2009级专业物理学学生姓名学号理学院实验时间:2012 年 6 月 4 日学生所在学院理学院专业:物理学班级:物理091),Z ϕ+∇E=-V 就可以求电场了x=0即只研究0320223/242()IdI r r R IR z μπμ-⨯+萨伐尔定律dB=对于载流圆环,其轴线上的磁感强度由于具有对称性若其轴线取为Z 轴,则磁感应强度的方向垂直圆形线圈平面沿B=而空间其他位置磁感应强度助计算机求数值解便可以直观的将磁场的空间分布表示出来dI 0044x y z z y x z y x z x x y ijkdx dy dzr r r I dB r I dB μπμπ⨯⨯==r=展开计算有:dI r=(r dy-r dz)i+(r dz-r dx)j+(r dx-r dy)k 这样r dy-r dz r dz-r dx r dx-r%画电势分布contour(X(:,:,1),Y(:,:,1),v,[6,8,10,12,14,16,18,20,22,24,26,28,30,32],'g') hold onsx=0.2;sy=[-3.2:0.4:3.2];%计算电场线起点[Sx,Sy]=meshgrid(sx,sy);%利用对称性画电场线streamline(X(:,:,1),Y(:,:,1),Ex,Ey,Sx,Sy);hold onstreamline(-X(:,:,1),Y(:,:,1),-Ex,Ey,-Sx,Sy);xlabel('x');ylabel('y');title('带电细棒的电势及电场分布')(2)clear alllam=1e-9;%带电环的电荷线密度ep0=8.85*1e-12;%真空中的电容器c0=lam/(4*pi*ep0);%归并常数R=1.2;%带电环的半径y=-6:0.11:6;z=-6:0.11:6;phi=0:pi/20:2*pi;[Y,Z,PHI]=meshgrid(y,z,phi);r=sqrt((R*cos(PHI)).^2+(Y-R*sin(PHI)).^2+Z.^2);载流圆环的磁场clear allI0=1e2;%截流圆环中的电流mu0=4*pi*1e-7;%真空中的磁导率c0=I0*mu0/(4*pi);%归并常数R=1.5;y=-2:0.04:2;z=-2:0.04:2;phi=0:pi/40:2*pi;[Y,Z,PHI]=meshgrid(y,z,phi);r=sqrt((R*cos(PHI)).^2+(Y-R*sin(PHI)).^2+Z.^2); r3=r.^3;dBy=c0*R*Z.*sin(PHI)./r3;%求磁场的y,z分量dBz=c0*R*(R-Y.*sin(PHI))./r3;By=pi/20*trapz(dBy,3);Bz=pi/20*trapz(dBz,3);B=sqrt(By.^2+Bz.^2);figureaxis([-2,2,-2,2]);line(R,0,'marker','.','markersize',30,'color','r')line(-R,0,'marker','.','markersize',30,'color','r') hold onsz=0.1;sy=[0.11:0.13:1.28];[Sy,Sz]=meshgrid(sy,sz);streamline(Y(:,:,1),Z(:,:,1),By,Bz,Sy,Sz);%利用对称性画磁场线streamline(-Y(:,:,1),Z(:,:,1),-By,Bz,-Sy,Sz);streamline(-Y(:,:,1),-Z(:,:,1),-By,-Bz,-Sy,-Sz);streamline(Y(:,:,1),-Z(:,:,1),By,-Bz,Sy,-Sz);title('载流圆环磁场分布图')xlabel('y')ylabel('z')figuresubplot(2,2,1)mesh(Y(:,:,1),Z(:,:,1),By);title('磁场y分量')xlabel('y')ylabel('z')subplot(2,2,2)mesh(Y(:,:,1),Z(:,:,1),Bz);title('磁场z分量')xlabel('y')ylabel('z')subplot(2,2,3)mesh(Y(:,:,1),Z(:,:,1),B);title('载流圆环磁场大小分布图')xlabel('y')ylabel('z')zlabel('B')。
数值分析实习报告
![数值分析实习报告](https://img.taocdn.com/s3/m/93cdc9695b8102d276a20029bd64783e08127d54.png)
一、实习背景随着科学技术的飞速发展,数值分析在各个领域都得到了广泛的应用。
为了更好地掌握数值分析的基本理论和方法,提高自己的实践能力,我于2023年暑期参加了某科技有限公司的数值分析实习。
二、实习内容1. 数值微分在实习期间,我首先学习了数值微分的基本理论和方法。
通过实际操作,我掌握了使用中心差分法、前向差分法和后向差分法计算函数在某点的导数。
在实际应用中,我使用这些方法对工程问题中的函数进行了导数计算,为后续的数值积分和数值求解提供了基础。
2. 数值积分接下来,我学习了数值积分的基本理论和方法。
在实习过程中,我掌握了梯形法则、辛普森法则和柯特斯法则等数值积分方法。
通过实际操作,我能够对函数进行数值积分,并在实际工程问题中应用这些方法。
3. 线性方程组求解线性方程组在数值分析中具有广泛的应用。
在实习期间,我学习了高斯消元法、LU 分解法、Cholesky分解法等求解线性方程组的方法。
通过实际操作,我能够对大规模线性方程组进行求解,并在实际工程问题中应用这些方法。
4. 最优化方法最优化方法是数值分析中的重要分支。
在实习期间,我学习了梯度下降法、牛顿法、共轭梯度法等最优化方法。
通过实际操作,我能够对实际问题进行最优化求解,并在实际工程问题中应用这些方法。
5. 数值求解微分方程微分方程在科学研究和工程应用中具有重要作用。
在实习期间,我学习了欧拉法、龙格-库塔法等数值求解微分方程的方法。
通过实际操作,我能够对微分方程进行数值求解,并在实际工程问题中应用这些方法。
三、实习收获1. 提高了数值分析的理论水平。
通过实习,我对数值分析的基本理论和方法有了更深入的理解。
2. 增强了实际操作能力。
在实习过程中,我熟练掌握了各种数值分析方法的实际操作,提高了自己的动手能力。
3. 培养了团队合作精神。
在实习过程中,我与团队成员密切合作,共同完成实习任务,提高了自己的团队协作能力。
4. 了解了数值分析在工程应用中的重要性。
数值计算实验报告积分
![数值计算实验报告积分](https://img.taocdn.com/s3/m/7fca5b0c76232f60ddccda38376baf1ffd4fe350.png)
一、实验目的1. 理解积分的概念和基本性质。
2. 掌握数值积分的方法,包括矩形法、梯形法、辛普森法等。
3. 通过实际计算,加深对积分概念的理解。
二、实验原理积分是微积分学中的一个基本概念,表示一个函数在某区间内的累积变化量。
数值积分是指利用数值方法求解积分,常见的方法有矩形法、梯形法、辛普森法等。
1. 矩形法:将积分区间分成若干等份,用每个小区间的宽度乘以函数在该区间的值,再将所有小区间的乘积相加,得到积分的近似值。
2. 梯形法:将积分区间分成若干等份,用每个小区间的宽度乘以函数在该区间的平均值,再将所有小区间的乘积相加,得到积分的近似值。
3. 辛普森法:将积分区间分成若干等份,用每个小区间的宽度乘以函数在该区间的二次多项式近似值,再将所有小区间的乘积相加,得到积分的近似值。
三、实验步骤1. 选择一个具体的积分问题,例如:计算函数f(x) = x^2在区间[0,1]上的积分。
2. 根据所选择的积分方法,设置相应的参数。
例如,对于矩形法,需要设置小区间的数量n;对于梯形法,需要设置小区间的数量n;对于辛普森法,需要设置小区间的数量n。
3. 计算每个小区间的宽度,例如,对于区间[0,1],小区间的宽度为h = (1-0)/n。
4. 根据所选的积分方法,计算积分的近似值。
5. 比较不同积分方法的近似值,分析误差来源。
四、实验结果与分析以函数f(x) = x^2在区间[0,1]上的积分为例,进行数值积分实验。
1. 矩形法:取n=4,计算得到积分的近似值为0.5625。
2. 梯形法:取n=4,计算得到积分的近似值为0.6667。
3. 辛普森法:取n=4,计算得到积分的近似值为0.6667。
通过比较不同积分方法的近似值,可以发现辛普森法的误差较小,且随着n的增大,误差逐渐减小。
这表明辛普森法在数值积分中具有较高的精度。
五、实验总结1. 本实验通过数值积分方法,计算了函数f(x) = x^2在区间[0,1]上的积分,加深了对积分概念的理解。
数值分析实验报告数值积分
![数值分析实验报告数值积分](https://img.taocdn.com/s3/m/215aec11b7360b4c2e3f64b8.png)
4
用龙贝格算法求解积分
首先得到龙贝格积分表
RT =
0.92064341802145 0 0 0
0.93969524184872 0.94604584979115 0 0
0.94441400943698 0.94598693196639 0.94598300411141 0
0.945590985433080.94598331076511 0.94598306935170 0.94598307038726
迭代次数
迭代结果
迭代次数
迭代结果
0
0.94604584
2
0.94598331
1
0.94598693
3
0.94598308
通过计算可以发现,用复化Simpson公式,当迭代3次时,迭代误差小于
(3)用龙贝格算法求解积分
首先得到龙贝格积分表
RT =
0.683939720585721 0 0
0.731370251828563 0.747180428909510 0 0
用区间逐次分半的复化Simpson公式计算上述积分的近似值
迭代次数
迭代结果
迭代次数
迭代结果
0
0.74718042
3
0.74682425
1
0.74685537
4
0.746824140
2
0.74682612
通过计算可以发现,用复化Simpson公式,当迭代4次时,迭代误差小于
对于积分 ,用区间逐次分半的复化梯形公式计算上述积分的近似值。
(3)复化梯形公式设计算法如下:
1输入求积区间 及精度要求 ,令 , 计算
实验五-数值微分与积分计算方法实验报告
![实验五-数值微分与积分计算方法实验报告](https://img.taocdn.com/s3/m/cad64fd54afe04a1b071ded1.png)
1.用1阶、2阶、3阶、4阶、5阶、6阶、8阶的牛顿-科特斯公式,计算定积分 ,列表给出计算结果。
2.(课外阅读,感兴趣的同学可实现文献中的算法)
四、实验步骤(或记录)
1.(1)问题分析:
由于牛顿-科特斯公式如下: (b-a)
其中 = dx,以此公式为基础编写程序。
其中主程序1是利用牛顿-科特斯公式求定积分的程序,由于科特斯系数最多7阶,为了方便我们可以直接使用,省得每次都计算,故编写主程序2来计算科特斯系数。
ans =
0.8061
>> NewtonCotes(@(x)sin(x.*x),0,pi/2,4)
ans =
0.8324
>> NewtonCotes(@(x)sin(x.*x),0,pi/2,5)
ans =
0.8305
>> NewtonCotes(@(x)sin(x.*x),0,pi/2,6)
ans =
0.8281
四、教师评语(或成绩)
教师签字:
年月日
0.8282
>> NewtonCotes(@(x)sin(x.*x),0,pi/2,8)
ans =
0.8281
(4)结果:
利用1阶、2阶、3阶、4阶、5阶、6阶、8阶的牛顿-科特斯公式计算定积分 的结果绘制成表格如下:
n
1
2
3
4
5
6
8
0.4903
0.7692
0.8061
0.8324
0.8305
0.8282
y=Ak*fx';
主程序2:
function Ck=cotescoeff(n)
数值计算方法实验报告
![数值计算方法实验报告](https://img.taocdn.com/s3/m/ab830dc1bb0d4a7302768e9951e79b89680268f3.png)
数值计算方法实验报告一、实验目的本实验旨在通过数值计算方法的实验操作,深入理解数值计算方法的原理与应用,掌握数值计算方法的相关技能,提高数值计算方法的实际应用能力。
二、实验内容1.数值微积分2.数值代数3.数值微分方程4.数值线性代数5.数值优化6.数值统计分析7.数值随机模拟8.数值傅立叶分析9.数值偏微分方程三、实验步骤1.数值微积分:通过不同的数值积分方法,计算给定函数的定积分值,并对不同数值积分方法的误差进行分析。
2.数值代数:通过使用线性代数方法,求解给定的线性方程组,并分析不同线性方程组求解方法的优劣。
3.数值微分方程:通过使用常微分方程数值解法,求解给定的微分方程,并比较不同求解方法的精度和稳定性。
4.数值线性代数:通过使用特征值分解方法,对给定的矩阵进行特征值分解,并分析不同特征值分解方法的优缺点。
5.数值优化:通过使用不同的优化方法,求解给定的优化问题,并比较不同的优化方法的效率和精度。
6.数值统计分析:通过使用不同的统计分析方法,对给定的数据进行统计分析,并分析不同的统计方法的优缺点。
7.数值随机模拟:通过使用随机模拟方法,模拟给定的概率分布,并分析不同随机模拟方法的效率和精度。
8.数值傅立叶分析:通过使用傅立叶分析方法,对给定的信号进行频谱分析,并分析不同的傅立叶分析方法的优缺点。
9.数值偏微分方程:通过使用偏微分方程数值解法,求解给定的偏微分方程,并比较不同求解方法的精度和稳定性。
四、实验结果与分析本实验中,通过对不同的数值计算方法的实验操作,我们可以更深入地理解数值计算方法的原理与应用,并掌握数值计算方法的相关技能,提高数值计算方法的实际应用能力。
同时,通过实验结果的分析,我们可以更好地比较不同数值计算方法的优缺点,为实际应用提供参考依据。
五、实验总结本实验旨在通过数值计算方法的实验操作,深入理解数值计算方法的原理与应用,掌握数值计算方法的相关技能,提高数值计算方法的实际应用能力。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验三 数值积分程序设计算法
1)实验目的
通过本次实验熟悉并掌握各种数值积分算法及如何在matlab 中通过设计程序实现这些算法,从而更好地解决实际中的问题。
2)实验题目
给出积分 dx x I ⎰-=3
221
1 1.用Simpson 公式和N=8的复合Simpson 公式求积分的近似值.
2.用复合梯形公式、复合抛物线公式、龙贝格公式求定积分,要求绝对误差为 710*2
1
-=ε,将计算结果与精确解做比较,并对计算结果进行分析。
3)实验原理与理论基础
Simpson 公式
)]()2(4)([6b f b a f a f a b S +++-=
复化梯形公式
将定积分⎰=b
a
dx x f I )(的积分区间],[b a 分隔为n 等分,各节点为n j jh a x j ,,1,0, =+= n
a b h -=复合梯形(Trapz)公式为 ])()(2)([211
∑-=++-=n j j n b f x f a f n a b T 如果将],[b a 分隔为2n 等分,而n a b h /)(-=不变,则 )]()(2)(2)([41021112b f x f x f a f n a b T n j j n j j n +++-=∑∑-=+-= 其中
h j a h x x j j )21(2121
++=+=+,)]()(2)(2)([4102
1112b f x f x f a f n a b T n j j n j j n +++-=∑∑-=+-= ∑-=-++-+=10)2)12((221n j n n
a b j a f n a b T n=1时,a b h -=,则)]()([2
1b f a f a b T +-=
)0(0T = )2
1(22112h a f a b T T +-+=)1(0T = 若12-=k n ,记)1(0-=k T T n , ,2,1=k 12--=k a b h jh a x j +=12--+=k a b j a h x x j j 2121
+=+k a b j a 2
)12(-++=,则可得如下递推公式
)0(0T )]()([2b f a f a b +-= ∑-=--++-+-=120
001)2)12((2)1(21)(k j k k a b j a f a b k T k T k=1,2, 即为梯形递推公式。
由复化递推公式的余项)(3122n n n T T T I -≈- n n T T I 3
1342-≈ n n j j n T x f n a b T I 31))(221(341021--+≈∑-=+∑-=+-+≈1
02
1)(6)(431n j j n x f n a b T ≈I ])(4)(2)()((6102
111∑∑-=+-=+++-=n j j n j j x f x f b f a f n a b n S = 即为复化Simpson 公式。
Romberg 公式
由复合Cotes 公式的余项)(63122n n n C C C I -≈
-得n n C C I 63
163642-≈ )1(63
1)(636422--=k T k T 令)1(3-k T )1(63
1)(636422--=k T k T 由此综合可得)0(0T )]()([2b f a f a b +-= ∑-=--++-+-=120
001
)2)12((2)1(21)(k j k k a b j a f a b k T k T )1(1-k T )1(3
1)(3400--=k T k T )1(2-k T )1(15
1)(151611--=k T k T )1(3-k T )1(63
1)(636422--=k T k T ,2,1=k 4)实验内容
本次实验需要通过在matlab 中编程实现复化梯形及Romberg 等各种数值积分算法,从而更加熟练的掌握这几种算法,也通过在matlab 中的实现来比较这几种算法之间的优劣性,从而在实际应用中更好地选择算法,以利于解决实际中的问题。
5)实验结果
Simpson 算法 function z=simpson(a,b)
c=(a+b)/2;
z1=1/(a^2-1);z2=1/(b^2-1);z3=1/(c^2-1);
z=(b-a)*(z1+4*z3+z2)/6;
a=2;b=3;simpson(a,b)
ans =
0.2034
复合Simpson算法
function y=comsimpson(a,b,n)
z1=1/(a^2-1);z2=1/(b^2-1);
h=(b-a)/n;s1=0;x1=a+h/2;
s2=0;x2=a+h;
for i=0:1:(n-1)
x1=x1+h;
s1=s1+1/(x1^2-1);
end
for i=1:1:(n-1)
x2=x2+h;
s2=s2+1/(x2^2-1);
end
y=h*(z1+4*s1+2*s2+z2)/6;
>> a=2;b=3;n=8;comsimpson(a,b,n)
ans =
0.1804
复合梯形公式
function y=comti(a,b,e)%复合梯形公式求解
z1=1/(a^2-1);z2=1/(b^2-1);
c=(a+b)/2;z3=1/(c^2-1);
t=abs(z3-z2-z1);z4=z3;n=2;
while (t>e)
n=n+1;
h=(b-a)/n;
x=a;
s1=z1+z2;
for i=1:n-1
x=a+i*h;
s1=s1+1/(x^2-1);
end
s1=s1*h;
t=abs(s1-z4);z4=s1;
end
y=s1;
复合抛物线公式求解
%复合抛物线公式求解
function y=compwx(a,b,e)
s=1/(a^2-1)+1/(b^2-1);c=(b-a)/2+a;z=1/(c^2-1);
s3=(s+4*z)*(b-a)/6;
r=abs(s3-s*(b-a)/6);
n=0;
while(r<e)
n=n+1;
h=(b-a)/(2*n);
x=a;
s1=s;
for i=1:2:(2*n-1)
x=x+h;
s1=s1+4*1/(x^2-1);
x=x+h;
s1=s1+2*1/(x^2-1);
end
s2=s1*h/3;
r=abs(s2-s3);
s3=s2;
end
y=s3;
Romberg求积算法
%龙贝格算法
function[s,n]=Romberg(a,b,eps)
if nargin<3,eps=1e-6;
end
z1=1/(a^2-1);z2=1/(b^2-1);
s=10;s0=0;k=2;t(1,1)=(b-a)*(z1+z2)/2;
while (abs(s-s0)>eps)
h=(b-a)/2^(k-1);
w=0;
if(h~=0)
for i=1:(2^(k-1)-1)
x=a+i*h;
w=w+1/(x^2-1);
end
t(k,1)=h*(z1/2+w+z2/2);
for l=2:k
for i=1:(k-l+1)
t(i,l)=(4^(l-1)*t(i+1,l-1)-t(i,l-1))/(4^(l-1)-1);
end
end
s=t(1,k);
s0=(t(1,k-1));
k=k+1;
n=k;
else s=s0;
n=-k;
end
end
6)实验结果分析与小结
通过本次实验,在matlab中编写程序实现复合Simpson,复合梯形,复合抛物线及Romberg算法等,进一步熟悉了这几种数值积分算法,通过比较发现simpson算法不稳定,而梯形法简单但收敛慢,由梯形法递推而得到的Romberg算法具有更高的收敛速度。