复化梯形和复化simposon求积分

合集下载

数值分析复化梯形公式和复化三点Gauss公式

数值分析复化梯形公式和复化三点Gauss公式

数值分析第六次程序作业PB09001057 孙琪【问题】利用复化梯形积分公式和复化3点Gauss 积分公式计算积分的通用程序计算下列积分;I 1(f )=∫e −x2dx 10, I 2(f )=∫11+x 2dx 4, I 3(f )=∫12+cos (x)dx 2π, 取节点x i , i =0,…,N,N 为2k ,k =0,1,…,7,给出误差表格并简单分析你得到的数据。

【复化梯形积分公式】梯形法则:对两个节点相应的积分法则称为梯形法则:∫f (x )dx ≈b −a2ba [f (a )+f (b )] 如果划分区间[a,b]为:a =x 0<x 1<⋯<x n =b那么在每个区间上可应用梯形法则,此时节点未必是等距的,由此得到复合梯形法则:∫f (x )dx =∑∫f (x )dx x ix i−1ni=1ba ≈12∑(x i −x i−1)[f (x i−1)+f (x i )]ni=1对等间距h=(b-a)/n 及节点x i =a +ih ,复合梯形法则具有形式:∫f (x )dx ≈h2[f (a )+2∑f (a +ih )n−1i=1+f (b )]ba误差项为:−112(b −a )h 2f ′′(δ)【复化3点Gauss 积分公式】对给定的正的权函数w ,高斯求积法则的一般形式是:∫f (x )w (x )dx ba≈∑A i f(x i )ni=0对f ∈n 次多项式精确成立, A i =∫w(x)∏x−x j x i −x jnj=0j≠ibadx 。

复化3点Gauss 积分公式中:首先通过坐标变换将[x i ,x i+1]变为[-1,1],然后通过三点高斯积分公式:∫f (x )dx 1−1≈59f (−√35)+89f (0)+59f (√35)计算即可。

最后将所有的区间加起来就得到我们要的结果。

【算法分析】复合梯形法则和复化3点Gauss 积分法则的算法上述描述中都已介绍了,在此不多做叙述。

复化梯形公式,复化辛普森公式,复化柯特斯公式

复化梯形公式,复化辛普森公式,复化柯特斯公式

复化梯形公式,复化辛普森公式,复化柯特斯公式
复化梯形公式、复化辛普森公式和复化柯特斯公式都是用来计算定积分的近似值的方法。

1. 复化梯形公式:将积分区间分成若干个小区间,在每个小区间上用梯形面积近似代替该小区间的曲边梯形面积,然后将这些梯形面积相加,得到积分的近似值。

2. 复化辛普森公式:将积分区间分成若干个等分小区间,在每个小区间上用矩形面积近似代替该小区间的曲边梯形面积,然后将这些矩形面积相加,得到积分的近似值。

3. 复化柯特斯公式:将积分区间分成若干个等分小区间,在每个小区间上用切线段长度近似代替该小区间的曲边梯形面积,然后将这些切线段长度相加,得到积分的近似值。

这三种方法都是通过将积分区间分成若干个小区间,然后在每个小区间上用近似方法计算该小区间的曲边梯形面积,最后将这些近似值相加得到积分的近似值。

它们的精度和误差都与分区间的大小有关。

复化梯形公式和复化辛普生公式

复化梯形公式和复化辛普生公式
return result;
}
void simpson::integration()//实现积分
{
cout<<"输入上限和下限";
cin>>b>>a;
cout<<"输入你要使用simposn法则的数目(即等分数)";
cin>>n;
h=(b-a)/n;
sum_even_terms=0.0;
sum_odd_terms=0.0;
for(k=1;k<n;k++)
{
sum_even_terms+=sine(k*h);
}
for(k=0;k<n;k++)
{
sum_odd_terms+=sine((2*k+1)*h/2);
}
integral=(2.0*sum_even_terms+4.0*sum_odd_terms+sine(b)+1)*h/6.0;
《数值分析》实验报告
姓名
学号
日期
2012.11.20
实验室
设备编号
实验题目
用复化梯形公式和复化辛普生公式求I=∫01sinx/xdx
一实验目的
1.了解复化梯形公式和复化辛普生公式。
2.用复化梯形公式和复化辛普生公式求I=∫01sinx/xdx。
二实验内容
算法:复化梯形公式是Tn=∑h/2[f(xi)+ f(xi+1)]=(b-a)/2n[f(a)+2∑f(xi)+f(b)]记子段[xi,xi+1]的中点为xi+1/2,则复化Simpson公式为Sn=∑h/6[f(xi)+4f(xi+1/2)+ f(xi+1)]=b-a/6n[f(a)+4∑f(xi+1/2)+2f(xi)+f(b)]

(完整版)复化积分法(复化梯形求积,复化Simpson公式,变步长求积法)MATLAB编程实验报告

(完整版)复化积分法(复化梯形求积,复化Simpson公式,变步长求积法)MATLAB编程实验报告
format loБайду номын сангаасg;
syms t;
y=sin(t)/t;
a=0;b=1;
R0=0.5*10^(-3);
TN(a,b,y,R0);
结论如下:
三、结论:
复化梯形求积:
复化Simpson公式
变步长求积法
h=(b-a)/n;
f=0;
for k=1:n
x(k)=a+h*(k-1);
w(k)=x(k)+h/2;
z(k)=subs(y,t,w(k));
f=f+z(k);
end
T(i)=T(i-1)/2+h/2*f
if ((T(i)-T(i-1))/3)<=R0
break;
end
end
tl=T(i)
clc,clear;
q=1;
end
p=subs(y,t,b);
T(1)=(b-a)/2*(q+p);
i=2;
n=i-1;
h=(b-a)/n;
z1=a+h/2;
z2=subs(y,t,z1);
T(2)=T(1)/2+h/2*z2;
while ((T(i)-T(i-1))/3)>R0
i=i+1
n=i-1;
n=2^(n-1)
x(k)=a+(k-1)*h
z(k)=subs(y,t,x(k));
end
for i=2:n
f=f+z(i);
end
q=subs(y,t,a);
if y=='sin(t)/t'&&a==0
q=1;
end

复化梯形和复化simposon求积分

复化梯形和复化simposon求积分

课程设计报告课程名称数值逼近专业信息与计算科学班级姓名学号指导教师日期2011-06-27理学院应用数学系一、目的意义 (1) 进一步熟悉掌握复化梯形公式及其算法;(2) 进一步熟悉掌握复化Simpsom 公式及其算法;(3) 了解比较复化梯形公式和复化Simpsom 公式的代数精度。

二、内容要求积分计算问题:分别用复化梯形和复化Simpsom 求积公式计算积分dx e x x x 5.1402)(13-⎰-,并比较计算量(精度为10-8)。

三、问题解决的方法与算法方法:复化梯形和复化Simpsom 积分公式算法:输入:端点a 、b 以及要计算的积分公式f(x);输出:积分f(x)在指定区间上的近似值Step1:编写复化梯形和复化Simpson 积分公式Step2:输入所需的断点个数nSetp3:分别调用复化梯形和复化Simpson 积分公式数值积分及其应用 报告1Setp4:比较代数精度使其达到10-8Setp5:输出复化梯形和复化Simpson积分公式对应的值四、计算程序复化梯形积分公式:#include"stdio.h"#include"math.h"void main()#define n 4{float a,b,d,y;float h[n-2],k[n-2],s[n-1];a=0.0;b=4.0;printf("输出相邻节点间距:\n");d=(b-a)/n;printf("%f\n",d);printf("输出节点函数值:\n");for(int i=0;i<n+1;i++){h[i]=a+i*d;k[i]=13*(h[i]-h[i]*h[i])*exp(-1.5*h[i]);printf("k[%d]=%f\n",i,k[i]);}s[0]=k[0]+k[n];for(i=1;i<n;i++){s[i]=s[i-1]+2*k[i];}y=0.5*d*s[n-1];printf("输出积分值:\n");printf("%f\n",y);}复化抛物线积分公式:#include"stdio.h"#include"math.h"#define n 4void main(){float a,b,h;double x[100],k[100],y[100],g[100],z[100];printf("输入积分上下限:\n");scanf("%f %f",&a,&b);printf("输出积分步长:\n");h=(b-a)/4;printf("%f\n",h);for(int i=1;i<n;i++){x[i]=a+h*i;k[i]=x[i]-0.5*h;}k[n]=b-0.5*h;x[0]=a;x[n]=b;for(i=0;i<n+1;i++){y[i]=13*(x[i]-x[i]*x[i])*exp(-1.5*x[i]);} for(i=1;i<n+1;i++){g[i]=13*(k[i]-k[i]*k[i])*exp(-1.5*k[i]);} z[0]=y[0]+y[n];z[1]=0.0;z[2]=0.0;for(i=1;i<n;i++){z[1]=z[1]+y[i];}for(i=1;i<n+1;i++){z[2]=z[2]+g[i];}z[3]=h*(z[0]+2*z[1]+4*z[2])/6;printf("%f\n",z[3]);}五、计算结果与分析:复化梯形积分公式:复化抛物线积分公式:输出相邻节点间距:1.000000输出节点函数值:k[0]=0.000000k[1]=0.000000k[2]=-1.294464k[3]=-0.866502k[4]=-0.000026输出积分值:-6.482936Press any key to continue输入积分上下限:0 4输出积分步长:1.000000-1.608667Press any key to continue结果分析:通过该算法可以看出复化体形积分和simpson积分比梯形积分和抛物线积分具有更好的精度。

复化梯形公式和复化抛物线公式 -回复

复化梯形公式和复化抛物线公式 -回复

复化梯形公式和复化抛物线公式是数值积分中常用的近似计算方法,用于估计函数在给定区间上的定积分值。

1. 复化梯形公式(Composite Trapezoidal Rule):复化梯形公式通过将积分区间划分为多个小区间,然后在每个小区间上应用梯形公式进行计算。

具体步骤如下:- 将积分区间[a, b]均匀地分成n个小区间,每个小区间的宽度为h = (b - a) / n。

- 对于每个小区间,计算函数在两个端点的值,然后将这两个值与小区间宽度相乘并除以2,得到该小区间的梯形面积。

- 将所有小区间的梯形面积相加,即可得到近似的定积分值。

复化梯形公式的公式表示为:∫[a, b] f(x) dx ≈ h/2 * [f(a) + 2f(a+h) + 2f(a+2h) + ... + 2f(a+(n-1)h) + f(b)]2. 复化抛物线公式(Composite Simpson's Rule):复化抛物线公式通过将积分区间划分为多个小区间,然后在每个小区间上应用抛物线公式进行计算。

具体步骤如下:- 将积分区间[a, b]均匀地分成n个小区间,每个小区间的宽度为h = (b - a) / n。

- 对于每个小区间,计算函数在三个节点(起点、终点和中点)处的值,然后将这三个值与小区间宽度相乘并按照一定的权重进行组合,得到该小区间的抛物线面积。

- 将所有小区间的抛物线面积相加,即可得到近似的定积分值。

复化抛物线公式的公式表示为:∫[a, b] f(x) dx ≈ h/3 * [f(a) + 4f(a+h) + 2f(a+2h) + 4f(a+3h) + ... + 2f(a+(n-2)h) + 4f(a+(n-1)h) + f(b)]需要注意的是,选择合适的n值对于准确估计积分值非常重要。

一般情况下,增加n的值可以提高计算精度,但也会增加计算的复杂性和时间成本。

因此,在实际应用中需要根据需求进行权衡和选择合适的n值。

复化梯形公式和复化辛普森公式

复化梯形公式和复化辛普森公式

复化梯形公式和复化辛普森公式1. 引言嘿,大家好!今天我们来聊聊数学里那些看似高深莫测的公式,尤其是复化梯形公式和复化辛普森公式。

这些名字听起来就像是从某部科幻片里蹦出来的角色,但其实它们是我们在数值积分中不可或缺的好帮手。

你知道吗?它们就像是数学世界里的“超能英雄”,让我们轻松搞定积分,简直是妙不可言。

2. 复化梯形公式2.1 你知道什么是梯形吗?首先,咱们得聊聊复化梯形公式。

说白了,就是把一个复杂的积分任务,分解成几个小的梯形来求解。

想象一下,你在河边钓鱼,河水流得可欢了。

为了找一个合适的钓鱼点,你可能得把河分成几段,然后每一段的宽度就是你的小梯形。

你看,这就是复化梯形的魅力所在!2.2 如何运用复化梯形公式?用这个公式的时候,你只需把整个区间分成N个小区间,每个区间的宽度都是一样的。

然后,把每个小区间的函数值拿来加一加,再乘上宽度的一半,最后再把头尾的函数值加上。

这听起来是不是很简单?比如,你想算从0到1的某个函数的积分,只要把这个区间分成若干段,像切蛋糕一样,每一片都求个函数值,然后把结果合起来就行了。

简单得就像吃个冰淇淋,大家都喜欢。

3. 复化辛普森公式3.1 辛普森是谁?接下来,让我们来看看复化辛普森公式。

辛普森这个名字,大家可能都听过,或者说过“这是辛普森家的事儿”。

其实,他是一位牛逼的数学家,专门研究如何让积分变得更加简单。

辛普森公式就像是对梯形公式的一次升级,像换了个新款手机,功能更强大,效果更好。

3.2 如何运用复化辛普森公式?用复化辛普森公式的时候,我们也是把整个区间分成N个小区间,不过这里的N必须是偶数哦!每个小区间的宽度仍然是一样的。

然后,用函数值的加权平均法来计算。

换句话说,你把每个小区间的头尾和中间的函数值都考虑进来,像是为你的冰淇淋加上各种口味的配料。

最后,你的结果就会比单纯用梯形公式得来的要精准多了,仿佛一口下去,味蕾都在舞蹈。

4. 比较与应用4.1 谁更强?说到这儿,很多人就会问,复化梯形公式和复化辛普森公式,谁更厉害呢?其实,这就像问“苹果和橘子,哪个更好吃”。

复化梯形公式和复化Simpson公式

复化梯形公式和复化Simpson公式

数值计算方法上机题目3一、计算定积分的近似值:221x e xe dx =⎰ 要求:(1)若用复化梯形公式和复化Simpson 公式计算,要求误差限71021-⨯=ε,分别利用他们的余项估计对每种算法做出步长的事前估计;(2)分别利用复化梯形公式和复化Simpson 公式计算定积分;(3)将计算结果与精确解比较,并比较两种算法的计算量。

1.复化梯形公式程序:程序1(求f (x )的n 阶导数:syms xf=x*exp(x) %定义函数f (x )n=input('输入所求导数阶数:')f2=diff(f,x,n) %求f(x)的n 阶导数结果1输入n=2f2 =2*exp(x) + x*exp(x)程序2:clcclearsyms x%定义自变量xf=inline('x*exp(x)','x') %定义函数f(x)=x*exp(x),换函数时只需换该函数表达式即可f2=inline('(2*exp(x) + x*exp(x))','x') %定义f(x)的二阶导数,输入程序1里求出的f2即可。

f3='-(2*exp(x) + x*exp(x))'%因fminbnd()函数求的是表达式的最小值,且要求表达式带引号,故取负号,以便求最大值e=5*10^(-8) %精度要求值a=1 %积分下限b=2 %积分上限x1=fminbnd(f3,1,2) %求负的二阶导数的最小值点,也就是求二阶导数的最大值点对应的x值for n=2:1000000 %求等分数nRn=-(b-a)/12*((b-a)/n)^2*f2(x1) %计算余项if abs(Rn)<e %用余项进行判断break% 符合要求时结束endendh=(b-a)/n %求hTn1=0for k=1:n-1 %求连加和xk=a+k*hTn1=Tn1+f(xk)endTn=h/2*((f(a)+2*Tn1+f(b)))z=exp(2)R=Tn-z %求已知值与计算值的差fprintf('用复化梯形算法计算的结果 Tn=')disp(Tn)fprintf('等分数 n=')disp(n) %输出等分数fprintf('已知值与计算值的误差 R=')disp(R)输出结果显示:用复化梯形算法计算的结果Tn= 7.3891等分数n=7019已知值与计算值的误差R= 2.8300e-0082. Simpson公式程序:程序1:(求f(x)的n阶导数):syms xf=x*exp(x) %定义函数f(x)n=input('输入所求导数阶数:')f2=diff(f,x,n) %求f(x)的n阶导数结果1输入n=4f2 =4*exp(x) + x*exp(x)程序2:clcclearsyms x%定义自变量xf=inline('x*exp(x)','x') %定义函数f(x)=x*exp(x),换函数时只需换该函数表达式即可f2=inline('(4*exp(x) + x*exp(x))','x') %定义f(x)的四阶导数,输入程序1里求出的f2即可f3='-(4*exp(x) + x*exp(x))'%因fminbnd()函数求的是表达式的最小值,且要求表达式带引号,故取负号,一边求最大值e=5*10^(-8) %精度要求值a=1 %积分下限b=2 %积分上限x1=fminbnd(f3,1,2) %求负的四阶导数的最小值点,也就是求四阶导数的最大值点对应的x值for n=2:1000000 %求等分数nRn=-(b-a)/180*((b-a)/(2*n))^4*f2(x1) %计算余项if abs(Rn)<e %用余项进行判断break% 符合要求时结束endendh=(b-a)/n %求hSn1=0Sn2=0for k=0:n-1 %求两组连加和xk=a+k*hxk1=xk+h/2Sn1=Sn1+f(xk1)Sn2=Sn2+f(xk)endSn=h/6*(f(a)+4*Sn1+2*(Sn2-f(a))+f(b)) %因Sn2多加了k=0时的值,故减去f(a)z=exp(2)R=Sn-z %求已知值与计算值的差fprintf('用Simpson公式计算的结果 Sn=')disp(Sn)fprintf('等分数 n=')disp(n)fprintf('已知值与计算值的误差 R=')disp(R)输出结果显示:用Simpson公式计算的结果Sn= 7.3891等分数n=24已知值与计算值的误差R= 2.7284e-008用复化梯形公式计算的结果为:7.3891,与精确解的误差为:2.8300e-008。

复化梯形公式和复化Simpson公式

复化梯形公式和复化Simpson公式

数值计算方法上机题目3一、计算定积分的近似值:221x e xe dx =⎰ 要求:(1)若用复化梯形公式和复化Simpson 公式计算,要求误差限71021-⨯=ε,分别利用他们的余项估计对每种算法做出步长的事前估计;(2)分别利用复化梯形公式和复化Simpson 公式计算定积分;(3)将计算结果与精确解比较,并比较两种算法的计算量。

1.复化梯形公式程序:程序1(求f (x )的n 阶导数:syms xf=x*exp(x) %定义函数f (x )n=input('输入所求导数阶数:')f2=diff(f,x,n) %求f(x)的n 阶导数结果1输入n=2f2 =2*exp(x) + x*exp(x)程序2:clcclearsyms x%定义自变量xf=inline('x*exp(x)','x') %定义函数f(x)=x*exp(x),换函数时只需换该函数表达式即可f2=inline('(2*exp(x) + x*exp(x))','x') %定义f(x)的二阶导数,输入程序1里求出的f2即可。

f3='-(2*exp(x) + x*exp(x))'%因fminbnd()函数求的是表达式的最小值,且要求表达式带引号,故取负号,以便求最大值e=5*10^(-8) %精度要求值a=1 %积分下限b=2 %积分上限x1=fminbnd(f3,1,2) %求负的二阶导数的最小值点,也就是求二阶导数的最大值点对应的x值for n=2:1000000 %求等分数nRn=-(b-a)/12*((b-a)/n)^2*f2(x1) %计算余项if abs(Rn)<e %用余项进行判断break% 符合要求时结束endendh=(b-a)/n %求hTn1=0for k=1:n-1 %求连加和xk=a+k*hTn1=Tn1+f(xk)endTn=h/2*((f(a)+2*Tn1+f(b)))z=exp(2)R=Tn-z %求已知值与计算值的差fprintf('用复化梯形算法计算的结果 Tn=')disp(Tn)fprintf('等分数 n=')disp(n) %输出等分数fprintf('已知值与计算值的误差 R=')disp(R)输出结果显示:用复化梯形算法计算的结果 Tn= 7.3891等分数 n=7019已知值与计算值的误差 R= 2.8300e-0082. Simpson公式程序:程序1:(求f(x)的n阶导数):syms xf=x*exp(x) %定义函数f(x)n=input('输入所求导数阶数:')f2=diff(f,x,n) %求f(x)的n阶导数结果1输入n=4f2 =4*exp(x) + x*exp(x)程序2:clcclearsyms x%定义自变量xf=inline('x*exp(x)','x') %定义函数f(x)=x*exp(x),换函数时只需换该函数表达式即可f2=inline('(4*exp(x) + x*exp(x))','x') %定义f(x)的四阶导数,输入程序1里求出的f2即可f3='-(4*exp(x) + x*exp(x))'%因fminbnd()函数求的是表达式的最小值,且要求表达式带引号,故取负号,一边求最大值e=5*10^(-8) %精度要求值a=1 %积分下限b=2 %积分上限x1=fminbnd(f3,1,2) %求负的四阶导数的最小值点,也就是求四阶导数的最大值点对应的x值for n=2:1000000 %求等分数nRn=-(b-a)/180*((b-a)/(2*n))^4*f2(x1) %计算余项if abs(Rn)<e %用余项进行判断break% 符合要求时结束endendh=(b-a)/n %求hSn1=0Sn2=0for k=0:n-1 %求两组连加和xk=a+k*hxk1=xk+h/2Sn1=Sn1+f(xk1)Sn2=Sn2+f(xk)endSn=h/6*(f(a)+4*Sn1+2*(Sn2-f(a))+f(b)) %因Sn2多加了k=0时的值,故减去f(a)z=exp(2)R=Sn-z %求已知值与计算值的差fprintf('用Simpson公式计算的结果 Sn=')disp(Sn)fprintf('等分数 n=')disp(n)fprintf('已知值与计算值的误差 R=')disp(R)输出结果显示:用Simpson公式计算的结果 Sn= 7.3891等分数 n=24已知值与计算值的误差 R= 2.7284e-008用复化梯形公式计算的结果为:7.3891,与精确解的误差为:2.8300e-008。

常用的复化求积公式有复化梯形公式和复化辛普森公式。

常用的复化求积公式有复化梯形公式和复化辛普森公式。

f ( xn1 ))
f ( xn )

h 2

f
(a)
n1
2
k 1
f
( xk ) f
(b)


Tn

h 2

f
(a)
n1
2
k 1
f
( xk )
f
(b)
称其为复化梯形公式。
当f(x)在[a,b]上有连续的二阶导数,在子区间xk , xk1
上梯形公式的余项已知为
RTk
h3
12
f (k )
k xk , x k1
在[a,b]上的余项
n1
Rn ( f ) RTk
k0
n1 h3

k0

12
f
(k
)

根据连续函数的介值定理知,存在 a, b ,使
1 n1
n k0
森公式所得近似值 Tn , Sn , Cn 的余项和步长的关系依次 为O(h2 ) 、O(h4 )、O(h6 ) 。因此当h→0 (即n→∞)时,Tn , Sn , Cn
都收敛于积分真值,且收敛速度一个比一个快。
例1 依次用n=8的复化梯形公式、n=4的复化辛普森公式计算
I
1 sin x dx
4.3 复合求积公式
问题1:由梯形、辛普森和柯特斯求积公式余项,分析随着求 积节点数的增加,对应公式的精度是怎样变化?
问题2:当n≥8时N—C求积公式还具有数值稳定性吗?可用增 加求积节点数的方法来提高计算精度吗?
在实际应用中,通常将积分区间分成若干个小区间, 在每个小区间上采用低阶求积公式,然后把所有小区间上 的计算结果加起来得到整个区间上的求积公式,这就是复 化求积公式的基本思想。常用的复化求积公式有复化梯形 公式和复化辛普森公式。

复化梯形公式和复化Simpson公式

复化梯形公式和复化Simpson公式

数值计算方法上机题目3一、计算定积分的近似值:要求:(1)若用复化梯形公式和复化Simpson 公式计算,要求误差限71021-⨯=ε,分别利用他们的余项估计对每种算法做出步长的事前估计;(2)分别利用复化梯形公式和复化Simpson 公式计算定积分;(3)将计算结果与精确解比较,并比较两种算法的计算量。

1.复化梯形公式程序:程序1(求f (x )的n 阶导数:syms xf=x*exp(x) %定义函数f (x )n=input('输入所求导数阶数:')f2=diff(f,x,n) %求f(x)的n 阶导数 结果1输入n=2f2 =2*exp(x) + x*exp(x)程序2:clcclearsyms x %定义自变量xf=inline('x*exp(x)','x') %定义函数f(x)=x*exp(x),换函数时只需换该函数表达式即可 f2=inline('(2*exp(x) + x*exp(x))','x') %定义f(x)的二阶导数,输入程序1里求出的f2即可。

f3='-(2*exp(x) + x*exp(x))' %因fminbnd ()函数求的是表达式的最小值,且要求表达式带引号,故取负号,以便求最大值e=5*10^(-8) %精度要求值a=1 %积分下限b=2 %积分上限x1=fminbnd(f3,1,2) %求负的二阶导数的最小值点,也就是求二阶导数的最大值点对应的x值for n=2:1000000 %求等分数nRn=-(b-a)/12*((b-a)/n)^2*f2(x1) %计算余项if abs(Rn)<e %用余项进行判断break% 符合要求时结束endendh=(b-a)/n %求hTn1=0for k=1:n-1 %求连加和xk=a+k*hTn1=Tn1+f(xk)endTn=h/2*((f(a)+2*Tn1+f(b)))z=exp(2)R=Tn-z %求已知值与计算值的差fprintf('用复化梯形算法计算的结果 Tn=')disp(Tn)fprintf('等分数 n=')disp(n) %输出等分数fprintf('已知值与计算值的误差 R=')disp(R)输出结果显示:用复化梯形算法计算的结果Tn= 7.3891等分数n=7019已知值与计算值的误差R= 2.8300e-0082. Simpson公式程序:程序1:(求f(x)的n阶导数):syms xf=x*exp(x) %定义函数f(x)n=input('输入所求导数阶数:')f2=diff(f,x,n) %求f(x)的n阶导数结果1输入n=4f2 =4*exp(x) + x*exp(x)程序2:clcclearsyms x%定义自变量xf=inline('x*exp(x)','x') %定义函数f(x)=x*exp(x),换函数时只需换该函数表达式即可f2=inline('(4*exp(x) + x*exp(x))','x') %定义f(x)的四阶导数,输入程序1里求出的f2即可f3='-(4*exp(x) + x*exp(x))'%因fminbnd()函数求的是表达式的最小值,且要求表达式带引号,故取负号,一边求最大值e=5*10^(-8) %精度要求值a=1 %积分下限b=2 %积分上限x1=fminbnd(f3,1,2) %求负的四阶导数的最小值点,也就是求四阶导数的最大值点对应的x值for n=2:1000000 %求等分数nRn=-(b-a)/180*((b-a)/(2*n))^4*f2(x1) %计算余项if abs(Rn)<e %用余项进行判断break% 符合要求时结束endendh=(b-a)/n %求hSn1=0Sn2=0for k=0:n-1 %求两组连加和xk=a+k*hxk1=xk+h/2Sn1=Sn1+f(xk1)Sn2=Sn2+f(xk)endSn=h/6*(f(a)+4*Sn1+2*(Sn2-f(a))+f(b)) %因Sn2多加了k=0时的值,故减去f(a)z=exp(2)R=Sn-z %求已知值与计算值的差fprintf('用Simpson公式计算的结果 Sn=')disp(Sn)fprintf('等分数 n=')disp(n)fprintf('已知值与计算值的误差 R=')disp(R)输出结果显示:用Simpson公式计算的结果Sn= 7.3891等分数n=24已知值与计算值的误差R= 2.7284e-008用复化梯形公式计算的结果为:7.3891,与精确解的误差为:2.8300e-008。

MATLAB实现复化梯形公式复化SIMPSON公式以及ROMBERG积分

MATLAB实现复化梯形公式复化SIMPSON公式以及ROMBERG积分

MATLAB实现复化梯形公式复化SIMPSON公式以及ROMBERG积分复化梯形公式、复化SIMPSON公式和ROMBERG积分是常用的数值积分方法,用于对定积分进行数值近似计算。

下面将介绍MATLAB实现这三种方法的具体步骤。

复化梯形公式使用多个等距的子区间进行近似计算,然后将子区间上的梯形面积求和。

MATLAB代码如下:```matlabh=(b-a)/n;%子区间宽度x=a:h:b;%子区间节点y=f(x);%子区间节点对应的函数值result = h * (sum(y) - (y(1) + y(end)) / 2); % 计算近似积分值end```复化SIMPSON公式同样使用多个等距的子区间进行近似计算,但是每个子区间上使用二次多项式拟合。

MATLAB代码如下:```matlabh=(b-a)/n;%子区间宽度x=a:h:b;%子区间节点y=f(x);%子区间节点对应的函数值result = (h / 3) * (y(1) + y(end) + 4 * sum(y(2:2:end-1)) + 2 * sum(y(3:2:end-2))); % 计算近似积分值end```3. ROMBERG积分(Romberg Integration)ROMBERG积分是一种逐次精化的数值积分方法,通过不断提高梯形法则的阶数进行近似计算。

MATLAB代码如下:```matlabfunction result = romberg_integration(f, a, b, n)R = zeros(n, n); % 创建一个n*n的矩阵用于存储结果h=b-a;%子区间宽度R(1,1)=(h/2)*(f(a)+f(b));%计算初始近似积分值for j = 2:nh=h/2;%缩小子区间宽度sum = 0;for i = 1:2^(j-2)sum = sum + f(a + (2 * i - 1) * h);endR(j, 1) = 0.5 * R(j-1, 1) + (h * sum); % 使用梯形法则计算积分值for k = 2:jR(j, k) = R(j, k-1) + (R(j, k-1) - R(j-1, k-1)) / ((4^k) - 1); % 使用Romberg公式计算积分值endendresult = R(n, n); % 返回最终近似积分值end```以上是MATLAB实现复化梯形公式、复化SIMPSON公式以及ROMBERG积分的代码。

复合梯形积分和复合Simpson积分计算数值积分

复合梯形积分和复合Simpson积分计算数值积分

实验五一、实验名称复合梯形积分和复合Simpson 积分计算数值积分二、实验目的与要求:实验目的: 掌握复合梯形积分和复合Simpson 积分算法。

实验要求:1.给出复合梯形积分和复合Simpson 积分算法思路,2.用C 语言实现算法,运行环境为Microsoft VisualC++。

三、算法思路:我们把整个积分区间[a,b]分成n 个子区间[xi,xi+1],i=0,1,2,…,n,其中x0=a ,xn+1=b 。

这样求定积分问题就分解为求和问题:⎰∑⎰=-==b a n i x x i i dx x f dx x f S 11)()(当这n+1个结点为等距结点时,即n a b h ih a x i /)(-=+=,其中,i=0,1,2,…,n ,复化梯形公式的形式是∑=-+=ni i i n x f x f h S 11)]()([2 算法:input n0.0←Sfor i=1 to n do ))()((21i i x f x f h S S ++←- end dooutput S如果n 还是一个偶数,则复合Simpson 积分的形式是∑=--++=2/121222)]()(4)([3n i i i i n x f x f x f h S 算法:input n0.0←Sfor i=1 to n/2 do ))()(4)((321222i i i x f x f x f h S S +++←-- end dooutput S四、实验题目:五、问题的解:编写程序(程序见后面附录),输出结果如下:为了便于看清数值积分结果与原函数积分实际结果的差异。

我在运行程序时故意计算了一下原函数积分的实际结果。

分析并比较得到的数据可以看出,当k 越来越大时,数值积分的结果越来越靠近原函数积分实际结果,并且复合Simpson 积分的结果更迅速地靠近原函数积分实际结果,这是有原因的,从两种方法的误差项即可看出。

复化梯形公式和复化Simpson公式

复化梯形公式和复化Simpson公式

数值计算方法上机题目3一、计算定积分的近似值:221x e xe dx =⎰ 要求:(1)若用复化梯形公式和复化Simpson 公式计算,要求误差限71021-⨯=ε,分别利用他们的余项估计对每种算法做出步长的事前估计;(2)分别利用复化梯形公式和复化Simpson 公式计算定积分;(3)将计算结果与精确解比较,并比较两种算法的计算量。

1.复化梯形公式程序:程序1(求f (x )的n 阶导数:syms xf=x*exp(x) %定义函数f (x )n=input('输入所求导数阶数:')f2=diff(f,x,n) %求f(x)的n 阶导数结果1输入n=2f2 =2*exp(x) + x*exp(x)程序2:clcclearsyms x%定义自变量xf=inline('x*exp(x)','x') %定义函数f(x)=x*exp(x),换函数时只需换该函数表达式即可f2=inline('(2*exp(x) + x*exp(x))','x') %定义f(x)的二阶导数,输入程序1里求出的f2即可。

f3='-(2*exp(x) + x*exp(x))'%因fminbnd()函数求的是表达式的最小值,且要求表达式带引号,故取负号,以便求最大值e=5*10^(-8) %精度要求值a=1 %积分下限b=2 %积分上限x1=fminbnd(f3,1,2) %求负的二阶导数的最小值点,也就是求二阶导数的最大值点对应的x值for n=2:1000000 %求等分数nRn=-(b-a)/12*((b-a)/n)^2*f2(x1) %计算余项if abs(Rn)<e %用余项进行判断break% 符合要求时结束endendh=(b-a)/n %求hTn1=0for k=1:n-1 %求连加和xk=a+k*hTn1=Tn1+f(xk)endTn=h/2*((f(a)+2*Tn1+f(b)))z=exp(2)R=Tn-z %求已知值与计算值的差fprintf('用复化梯形算法计算的结果 Tn=')disp(Tn)fprintf('等分数 n=')disp(n) %输出等分数fprintf('已知值与计算值的误差 R=')disp(R)输出结果显示:用复化梯形算法计算的结果Tn= 7.3891等分数n=7019已知值与计算值的误差R= 2.8300e-0082. Simpson公式程序:程序1:(求f(x)的n阶导数):syms xf=x*exp(x) %定义函数f(x)n=input('输入所求导数阶数:')f2=diff(f,x,n) %求f(x)的n阶导数结果1输入n=4f2 =4*exp(x) + x*exp(x)程序2:clcclearsyms x%定义自变量xf=inline('x*exp(x)','x') %定义函数f(x)=x*exp(x),换函数时只需换该函数表达式即可f2=inline('(4*exp(x) + x*exp(x))','x') %定义f(x)的四阶导数,输入程序1里求出的f2即可f3='-(4*exp(x) + x*exp(x))'%因fminbnd()函数求的是表达式的最小值,且要求表达式带引号,故取负号,一边求最大值e=5*10^(-8) %精度要求值a=1 %积分下限b=2 %积分上限x1=fminbnd(f3,1,2) %求负的四阶导数的最小值点,也就是求四阶导数的最大值点对应的x值for n=2:1000000 %求等分数nRn=-(b-a)/180*((b-a)/(2*n))^4*f2(x1) %计算余项if abs(Rn)<e %用余项进行判断break% 符合要求时结束endendh=(b-a)/n %求hSn1=0Sn2=0for k=0:n-1 %求两组连加和xk=a+k*hxk1=xk+h/2Sn1=Sn1+f(xk1)Sn2=Sn2+f(xk)endSn=h/6*(f(a)+4*Sn1+2*(Sn2-f(a))+f(b)) %因Sn2多加了k=0时的值,故减去f(a)z=exp(2)R=Sn-z %求已知值与计算值的差fprintf('用Simpson公式计算的结果 Sn=')disp(Sn)fprintf('等分数 n=')disp(n)fprintf('已知值与计算值的误差 R=')disp(R)输出结果显示:用Simpson公式计算的结果Sn= 7.3891等分数n=24已知值与计算值的误差R= 2.7284e-008用复化梯形公式计算的结果为:7.3891,与精确解的误差为:2.8300e-008。

数值分析复化Simpson积分公式和复化梯形积分公式计算积分的通用程序培训讲学

数值分析复化Simpson积分公式和复化梯形积分公式计算积分的通用程序培训讲学

数值分析复化S i m p s o n积分公式和复化梯形积分公式计算积分的通用程序数值分析第五次程序作业PB09001057 孙琪【问题】分别编写用复化Simpson积分公式和复化梯形积分公式计算积分的通用程序;用如上程序计算积分:取节点并分析误差;简单分析你得到的数据。

【复化Simpson积分公式】Simpson法则:使用偶数个子区间上的复合Simpson法则:设n是偶数,则有将Simpson法则应用于每一个区间,得到复合Simpson法则:公式的误差项为:其中δ【复化梯形积分公式】梯形法则:对两个节点相应的积分法则称为梯形法则:如果划分区间[a,b]为:那么在每个区间上可应用梯形法则,此时节点未必是等距的,由此得到复合梯形法则:对等间距h=(b-a)/n及节点,复合梯形法则具有形式:误差项为:【算法分析】复合Simpson法则和复合梯形法则的算法上述描述中都已介绍了,在此不多做叙述。

【实验】通过Mathematica编写程序得到如下结果:1.利用复化Simpson积分公式得:可以看出,当节点数选取越来越多时,误差项越来越小,这从复合的Simpson公式很好看出来,因为在每一段小区间内,都是用Simpson法则去逼近,而每一段的误差都是由函数在该区间内4阶导数值和区间长度的4次方乘积决定的,当每一段小区间越来越小时,相应的每一段小区间内的逼近就会越来越好,从而整体的逼近效果就会越来越好。

2.利用复化梯形积分公式得:可以看出,当节点数选取越来越多时,误差项越来越小,这从复合的梯形公式很好看出来,因为在每一段小区间内,都是用梯形法则去逼近,而每一段的误差都是由函数在该区间内2阶导数值和区间长度的2次方乘积决定的,当每一段小区间越来越小时,相应的每一段小区间内的逼近就会越来越好,从而整体的逼近效果就会越来越好。

【分析】通过对上述两种法则的效果来看,复合Simpson法则的误差要比复合梯形法则收敛到0更快,说明复合Simpson法则逼近到原来的解更快,这主要是因为在每一段小区间内,复合Simpson法则利用得是Simpson法则,复合梯形法则利用得是梯形法则,前者的误差项要比后者的误差项小很多,因此造成了逼近速度的不一样。

利用复化梯形公式、复化simpson 公式计算积分

利用复化梯形公式、复化simpson 公式计算积分
t=0;
for i=1:n
t=t+h/2*(y(i)+y(i+1));%利用复化梯形公式求值
end
T=[T,t];%把不同n值所计算出的结果装入T中
end
R=ones(1,9)*(-(b-a)/12*h.^ 2*2);%积分余项(计算误差)
true=quad(@fx,0,1);%积分的真实值
A=T-true;%计算的值与真实值之差(实际误差)
function f=fx1(x)
f=x.^4;
a=0;%积分下线
b=1;%积分上线
T=[];%用来装不同n值所计算出的结果
for n=2:10
h=(b-a)/(2*n);%步长
x=zeros(1,2*n+1);%给节点定初值
for i=1:2*n+1
x(i)=a+(i-1)*h;%给节点赋值
end
x=linspace(0,1,9);
plot(x,A,'r',x,R,'*')%将计算误差与实际误差用图像画出来
注:由于被积函数是x.^2,它的二阶倒数为2,所以积分余项为:(-(b-a)/12*h.^















利用复化simpson公式的程序代码如下:
同样首先建立被积函数的函数文件:
x(i)=a+(i-1)*h;
end
y=x.^4;
t=y(1)+y(2*n+1);
for i=1:n
t=t+4*y(2*i)+2*y(2*i-1);

复化梯形公式和复化Simpson公式

复化梯形公式和复化Simpson公式

数值计算方法上机题目3一、计算定积分的近似值:221x e xe dx =⎰ 要求:(1)若用复化梯形公式和复化Simpson 公式计算,要求误差限71021-⨯=ε,分别利用他们的余项估计对每种算法做出步长的事前估计;(2)分别利用复化梯形公式和复化Simpson 公式计算定积分;(3)将计算结果与精确解比较,并比较两种算法的计算量。

1.复化梯形公式程序:程序1(求f (x )的n 阶导数:syms xf=x*exp(x) %定义函数f (x )n=input('输入所求导数阶数:')f2=diff(f,x,n) %求f(x)的n 阶导数结果1输入n=2f2 =2*exp(x) + x*exp(x)程序2:clcclearsyms x%定义自变量xf=inline('x*exp(x)','x') %定义函数f(x)=x*exp(x),换函数时只需换该函数表达式即可f2=inline('(2*exp(x) + x*exp(x))','x') %定义f(x)的二阶导数,输入程序1里求出的f2即可。

f3='-(2*exp(x) + x*exp(x))'%因fminbnd()函数求的是表达式的最小值,且要求表达式带引号,故取负号,以便求最大值e=5*10^(-8) %精度要求值a=1 %积分下限b=2 %积分上限x1=fminbnd(f3,1,2) %求负的二阶导数的最小值点,也就是求二阶导数的最大值点对应的x值for n=2:1000000 %求等分数nRn=-(b-a)/12*((b-a)/n)^2*f2(x1) %计算余项if abs(Rn)<e %用余项进行判断break% 符合要求时结束endendh=(b-a)/n %求hTn1=0for k=1:n-1 %求连加和xk=a+k*hTn1=Tn1+f(xk)endTn=h/2*((f(a)+2*Tn1+f(b)))z=exp(2)R=Tn-z %求已知值与计算值的差fprintf('用复化梯形算法计算的结果 Tn=')disp(Tn)fprintf('等分数 n=')disp(n) %输出等分数fprintf('已知值与计算值的误差 R=')disp(R)输出结果显示:用复化梯形算法计算的结果 Tn= 7.3891等分数 n=7019已知值与计算值的误差 R= 2.8300e-0082. Simpson公式程序:程序1:(求f(x)的n阶导数):syms xf=x*exp(x) %定义函数f(x)n=input('输入所求导数阶数:')f2=diff(f,x,n) %求f(x)的n阶导数结果1输入n=4f2 =4*exp(x) + x*exp(x)程序2:clcclearsyms x%定义自变量xf=inline('x*exp(x)','x') %定义函数f(x)=x*exp(x),换函数时只需换该函数表达式即可f2=inline('(4*exp(x) + x*exp(x))','x') %定义f(x)的四阶导数,输入程序1里求出的f2即可f3='-(4*exp(x) + x*exp(x))'%因fminbnd()函数求的是表达式的最小值,且要求表达式带引号,故取负号,一边求最大值e=5*10^(-8) %精度要求值a=1 %积分下限b=2 %积分上限x1=fminbnd(f3,1,2) %求负的四阶导数的最小值点,也就是求四阶导数的最大值点对应的x值for n=2:1000000 %求等分数nRn=-(b-a)/180*((b-a)/(2*n))^4*f2(x1) %计算余项if abs(Rn)<e %用余项进行判断break% 符合要求时结束endendh=(b-a)/n %求hSn1=0Sn2=0for k=0:n-1 %求两组连加和xk=a+k*hxk1=xk+h/2Sn1=Sn1+f(xk1)Sn2=Sn2+f(xk)endSn=h/6*(f(a)+4*Sn1+2*(Sn2-f(a))+f(b)) %因Sn2多加了k=0时的值,故减去f(a)z=exp(2)R=Sn-z %求已知值与计算值的差fprintf('用Simpson公式计算的结果 Sn=')disp(Sn)fprintf('等分数 n=')disp(n)fprintf('已知值与计算值的误差 R=')disp(R)输出结果显示:用Simpson公式计算的结果 Sn= 7.3891等分数 n=24已知值与计算值的误差 R= 2.7284e-008用复化梯形公式计算的结果为:7.3891,与精确解的误差为:2.8300e-008。

复化梯形公式和复化辛普森公式的精度比较

复化梯形公式和复化辛普森公式的精度比较

实验四、复化梯形公式和复化Simpson公式的精度比较(2学时)一、实验目的与要求1、熟悉复化Simpson公式和复化梯形公式的构造原理;2、熟悉并掌握二者的余项表达式;3、分别求出准确值,复化梯形的近似值,复化Simpson的近似值,并比较后两者的精度;4、从余项表达式,即误差曲线,来观察二者的精度,看哪个更接近于准确值。

二、实验内容:对于函数sin()xf xx=,试利用下表计算积分1sin xI dxx=⎰。

表格如下:注:分别利用复化梯形公式和复化Simpson公式计算,比较哪个精度更好。

其中:积分的准确值0.9460831I=。

三、实验步骤1、熟悉理论知识,并编写相应的程序;2、上机操作,从误差图形上观察误差,并与准确值相比较,看哪个精度更好;3、得出结论,并整理实验报告。

四、实验注意事项1、复化梯形公式,程序主体部分:for n=2:10T(n)=0.5*T(n-1)for i=1:2^(n-2)T(n)=T(n)+(sin((2*i-1)/2^(n-1))/((2*i-1)/2^(n-1)))/2^(n-1);endend2、复化Simpson公式,程序主体部分:for i=1:10n=2.^ix=0:1/n:1f=sin(x)./xf(1)=1s=0for j=1:n/2s=s+f(2*j)endt=0for j=1:(n/2-1)t=t+f(2*j-1)endS(i)=1/3/n*(f(1)+4*s+2*t+f(n+1))end五.实验内容复化梯形公式和复化辛普森公式的引入复化梯形公式:110[(()]2n n k k k hT f x f x -+==+∑;复化辛普森公式:11102[(4()()]6n n k k k k hS f x f x f x -++==++∑;根据题意和复化梯形公式、复化辛普森公式的原理编辑程序求解代码如下: Matlab 代码 clcs=quad('sin(x)./x',0,1) p1=zeros(10,1); p2=zeros(10,1); for k=6:15 s1=0; s2=0;x=linspace(0,1,k); y=sin(x)./x;z=(1/(2*(k-1))):(1/(k-1)):1; sz=sin(z)./z; y(1)=1; for i=1:(k-1)s1=s1+0.5*(x(i+1)-x(i))*(y(i)+y(i+1)); endfor j=1:(k-1)s2=s2+(1/6)*(x(j+1)-x(j))*(y(j)+y(j+1)+4*sz(j)); endp1(k-5)=s1-s; p2(k-5)=s2-s; end p1;p2;s1=s+p1(4)s2=s+p2(4)format longfor k=1:length(p1)p1(k)=abs(p1(k));p2(k)=abs(p2(k));endp1p2plot(6:1:15,p1,'-r')hold onplot(6:1:15,10000*(p2),'-c') hold off部分程序结果输出:s =0.946083070076534s1 =0.945690863582701s2 =0.946083085384947结果分析根据结果输出可知:积分10sin()xI dxx=⎰的准确值为:I= 0.946083070076534;通过复化梯形公式和复化辛普森公式得到的积分值为: s1 =0.945690863582701: s2 =0.946083085384947; 相对误差为:4111004.1510100S I Iδ--=⨯=⨯;822100 1.6210100S I Iδ--=⨯=⨯;显然,从相对误差可知通过辛普森公式得到的结果误差小精度高。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程设计报告
课程名称数值逼近
专业信息与计算科学
班级
姓名
学号
指导教师
日期2011-06-27
理学院应用数学系
一、目的意义 (1) 进一步熟悉掌握复化梯形公式及其算法;
(2) 进一步熟悉掌握复化Simpsom 公式及其算法;
(3) 了解比较复化梯形公式和复化Simpsom 公式的代数精度。

二、内容要求
积分计算问题:分别用复化梯形和复化Simpsom 求积公式计算积分dx e x x x 5.14
02)(13-⎰-,并比较计算量(精度为10-8)。

三、问题解决的方法与算法
方法:复化梯形和复化Simpsom 积分公式
算法:
输入:端点a 、b 以及要计算的积分公式f(x);
输出:积分f(x)在指定区间上的近似值
Step1:编写复化梯形和复化Simpson 积分公式
Step2:输入所需的断点个数n
Setp3:分别调用复化梯形和复化Simpson 积分公式
数值积分及其应用 报告
1
Setp4:比较代数精度使其达到10-8
Setp5:输出复化梯形和复化Simpson积分公式对应的值四、计算程序
复化梯形积分公式:
#include"stdio.h"
#include"math.h"
void main()
#define n 4
{
float a,b,d,y;
float h[n-2],k[n-2],s[n-1];
a=0.0;b=4.0;
printf("输出相邻节点间距:\n");
d=(b-a)/n;
printf("%f\n",d);
printf("输出节点函数值:\n");
for(int i=0;i<n+1;i++)
{
h[i]=a+i*d;
k[i]=13*(h[i]-h[i]*h[i])*exp(-1.5*h[i]);
printf("k[%d]=%f\n",i,k[i]);
}
s[0]=k[0]+k[n];
for(i=1;i<n;i++)
{
s[i]=s[i-1]+2*k[i];
}
y=0.5*d*s[n-1];
printf("输出积分值:\n");
printf("%f\n",y);
}
复化抛物线积分公式:
#include"stdio.h"
#include"math.h"
#define n 4
void main()
{
float a,b,h;
double x[100],k[100],y[100],g[100],z[100];
printf("输入积分上下限:\n");
scanf("%f %f",&a,&b);
printf("输出积分步长:\n");
h=(b-a)/4;
printf("%f\n",h);
for(int i=1;i<n;i++)
{
x[i]=a+h*i;
k[i]=x[i]-0.5*h;
}
k[n]=b-0.5*h;
x[0]=a;x[n]=b;
for(i=0;i<n+1;i++)
{y[i]=13*(x[i]-x[i]*x[i])*exp(-1.5*x[i]);} for(i=1;i<n+1;i++)
{g[i]=13*(k[i]-k[i]*k[i])*exp(-1.5*k[i]);} z[0]=y[0]+y[n];
z[1]=0.0;z[2]=0.0;
for(i=1;i<n;i++)
{z[1]=z[1]+y[i];}
for(i=1;i<n+1;i++)
{z[2]=z[2]+g[i];}
z[3]=h*(z[0]+2*z[1]+4*z[2])/6;
printf("%f\n",z[3]);
}
五、计算结果与分析:
复化梯形积分公式:
复化抛物线积分公式:
输出相邻节点间距:
1.000000
输出节点函数值:
k[0]=0.000000
k[1]=0.000000
k[2]=-1.294464
k[3]=-0.866502
k[4]=-0.000026
输出积分值:
-6.482936
Press any key to continue
输入积分上下限:
0 4
输出积分步长:
1.000000
-1.608667
Press any key to continue
结果分析:
通过该算法可以看出复化体形积分和simpson积分比梯形积分和抛物线积分具有更好的精度。

但要想达到同样的代数精度复化simposon更易达到要求。

收敛性更好。

六、参考文献
[1] 谭浩强. C语言程序设计[M]. 北京:清华大学出版社,2005.
[2] 秦新强. 数值逼近, 西安:西安理工大学印刷厂,2010.。

相关文档
最新文档