1、复化梯形公式和复化Simpson公式数值计算方法上机题目3一、计算定积分得近似值:要求:(1)若用复化梯形公式与复化Simpson公式计算,要求误差限,分别利用她们得余项估计对每种算法做出步长得事前估计;(2)分别利用复化梯形公式与复化Smpon公式计算定积分;(3)将计算结果与精确解比较,并比较两种算法得计算量.1、复化梯形公式程序:程序1(求(x)得阶导数:ms x=xexp(x) %定义函数f(x)n=int(输入所求导数阶数:) f2=iff(f,x,n) %求f(x)得阶导数结果1输入n=2f =*xp() +xexp(x)程序2:cccearys %定义自变量=nln(xexp(x
2、),x) 定义函数f(x)=x*exp(x),换函数时只需换该函数表达式即可=inlin(2ex(x) + x*exp(x),x)定义f()得二阶导数,输入程序1里求出得f2即可。3=(2x(x)*exp(x) %因minbnd()函数求得就是表达式得最小值,且要求表达式带引号,故取负号,以便求最大值=51(8) 精度要求值 a %积分下限b=2 积分上限x1=fminbd(f3,1,) %求负得二阶导数得最小值点,也就就是求二阶导数得最大值点对应得x值fo n2:0000 求等分数n Rn(ba)/12((ba)/n)2f2(x1) %计算余项 if abs(Rn)e %用余项进行判断 br
3、a 符合要求时结束 edndh(ba)/n %求Tn10 fr k=1:n1 求连加与 =a+kh 1=T1+(xk)end=/2(f(a)+2*T1+f(b)=xp(2)R=Tn-z %求已知值与计算值得差fpintf(用复化梯形算法计算得结果Tn=)i(n)frint(等分数n=)disp() %输出等分数fprintf(已知值与计算值得误差 R)ds()输出结果显示:用复化梯形算法计算得结果 T= 7、391等分数 n=7已知值与计算值得误差 = 2、300e002、 Simpson公式程序:程序1:(求f(x)得n阶导数):sys xf=xe(x) 定义函数f(x)=inu(输入所求导
4、数阶数:) f2=diff(f,x,n) 求f()得n阶导数结果1输入n4f2 =4ep() + x*exp(x)程序2:clccleasm x 定义自变量=inline(xexp(),x) 定义函数f(x)=exp(),换函数时只需换该函数表达式即可f2=nline(ep(x) +x*xp(x)),x) 定义f(x)得四阶导数,输入程序1里求出得f即可f3=(exp(x) + xxp(x) %因mibnd()函数求得就是表达式得最小值,且要求表达式带引号,故取负号,一边求最大值e=*(-) 精度要求值 a1 %积分下限b2 积分上限=fibnd(f3,1,2) 求负得四阶导数得最小值点,也就
5、就是求四阶导数得最大值点对应得x值for n=:00000 求等分数n Rn(ba)/10*((b-)/(2n))2(x) 计算余项 if as(Rn)e 用余项进行判断 break 符合要求时结束 ndndh=(b)/ 求n1= n2=0for k=:1 求两组连加与 xk=a+kh k1=k+h/2 n1=Sn1+f(xk1) S2=Sn+f(xk)nd Sn=h/6*(f(a)+4Sn1*(Sn-(a))+(b)) 因n2多加了k=0时得值,故减去f(a)z=xp()R=Snz %求已知值与计算值得差fpintf(用Simpso公式计算得结果 Sn)dsp(Sn)fpnt(等分数 n)d
6、isp(n) fprntf(已知值与计算值得误差 R=)disp()输出结果显示:用Sipso公式计算得结果 Sn=7、3891等分数 n=已知值与计算值得误差 R 2、784008用复化梯形公式计算得结果为:7、391,与精确解得误差为:2、30-00。等分数n709用复化Simpon公式计算得结果为:7、381,与精确解得误差为:2、78e-008.等分数23、柯斯特公式求积分:程序代码:(1)fucti y,Ck,Ak=NewtnCotes(fun,a,b,n) if nrgin=1 mm,nn=size(fun); mm8 erro(为了保证NetoCtes积分得稳定性,最多只能有9个
7、等距节点!) sef nn=2 errr(f构成应为:第一列为x,第二列为y,并且个数为小于10得等距节点!) end xk=fun(1,:); fk=fun(2,:); amin(xk); bmax(xk); nmm1; lif nargi=4 xk=inpce(a,b,+1); isa(fu,futinhanle) f=fu(xk); el eror(fu积分函数得句柄,且必须能够接受矢量输入!) e ls ero(输入参数错误,请参考函数帮助!)end Ckctscoef(); Ak=(-a)k; yAk*fx; ()fution k=cescoeff(n) fr =:n+ k=i-1;
8、 (i)=()(n-k)/fatorial(k)/factorial(k)/n*uadl((t)ntfn(t,n,),0,n); end (3)unciof=int(t,n,k) =1; fori=0:k1,k+1:n f、*(t-i); end代码解释:fntion y,Ck,Ak=ewonCo(un,a,b,n) yNewtoCots(fn,a,,n) %牛顿科特斯数值积分公式 % 参数说明: n,积分表达式,这里有两种选择 (1)积分函数句柄,必须能够接受矢量输入,比如un(x)sin(x)、*co(x) % (2)x,坐标得离散点, 第一列为,第二列为y, 必须等距, 且节点得个数小于
9、9,比如: fun1:8;sn(1:8) % 如果fn得表采用第二种方式,那么只需要输入第一个参数即可,否则还要输入,b,三个参数% ,积分下限 % b,积分上限 ,牛顿-科特斯数公式得阶数,必须满足17,因为8时不能保证公式得稳定性 ()n1,即梯形公式 % (2)n2,即辛普森公式% ()n=,即科特斯公式 y,数值积分结果 Ck,科特斯系数 Ak,求积系数 xamle % fn1=(x)sin();必须可以接受矢量输入 % fn20:0、1:、5;sin(0:、1:0、);%最多8个点,必须等距 y1=NewtoCote(fun1,0,0、,6)%y=etonCots(fun2) nrg
10、n=1 mm,n=sz(fu); fmm=8 er(为了保证NewtonCtes积分得稳定性,最多只能有个等距节点!) eseifnn=2 eror(fun构成应为:第一列为x,第二列为y,并且个数为小于10得等距节点!) end k=fun(1,:); fn(2,:); a=mi(xk); bmax(x); n=mm1; elsef ai=4 计算积分节点xk与节点函数值fx x=linspace(,n+); fis(fn,fncin_handl) fxn(k); els ero(fun积分函数得句柄,且必须能够接受矢量输入!) endelse erro(输入参数错误,请参考函数帮助!)en
11、d % 计算科特斯系数k=coecoff(n); %计算求积系数 k=(-)k; 求与算积分y=Akfx; fucton k=otescof(n) 由于科特斯系数最多7阶,为了方便我们可以直接使用,省得每次都计算 A1=1,1/2% A2=1,4,/ % 3=1,3,1/A=7,12,32,10 %51,7,50,0,75,/288 A=41,26,27,272,27,216,41/840 % A7=751,57,12,28,2989,1323,357,5/178 当时为了体现公式,我们使用程序计算n阶科特斯系数 fori=1:n+1 k=i-; C(i)(-)(n)foril(k)/factral(nk)/n*qadl((t)ntfu(,n,k),0,n); funtion f=itfu(,,k) 科特斯系数中得积分表达式=1; i=0:k1,k+:n f、(ti); end输出结果:fun=(x)exp(x);a=-1;b=;n4;Newtonote(fun,a,b,) ans=2、505二、三点数值微分
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1