Lagrange(X,f,x0) x1=-5:0.0001:5; y1=1./(1+x1.^2); plot(x1,y1)
1.41.210.80.60.40.20-5-4-3-2-1012345
由以上几个图形我们可以得知,插值节点越多时,插值多项式的收敛性越好; 12:令f(x)?e3xcos(?x),考虑积分?2?0f(x)dx。区间分为50,100,200,500,
1000等,分别用复合梯形以及复合Simpson积分公式计算积分值,将数值积分的结果与精确值比较,列表说明误差的收敛性。
复合梯形公式通用程序:
%f为被积函数,n为积分区间等分的数目,a,b分别为积分下上限 function tixing(f,n,a,b) syms x; sum=0; xk=a:(b-a)/n:b; for i=2:n-1 x=xk(i);
sum=sum+eval(f); syms x; end x=a; f1=eval(f); x=b; f2=eval(f);
T=(b-a)/(2*n)*(f1+f2+2*sum); disp(T)
复合sipson公式: function Simpson(f,n,a,b) syms x; sum=0; sum1=0; xk=a:(b-a)/n:b; for i=1:n-1
x=(xk(i)+xk(i+1))/2; sum=sum+eval(f); syms x; end for i=2:n-1 x=xk(i);
sum1=sum1+eval(f); syms x; end x=a;
f1=eval(f); x=b; f2=eval(f);
T=(b-a)/(6*n)*(f1+f2+2*sum1+4*sum); disp(T)
利用matlab内置函数int()求出该积分式的真是值为: >> syms x
>> int(exp(3*x)*cos(pi*x),0,2*pi) ans =
3.5232e+07
利用符合simpson公式计算如下表:
n 50 100 200 500 1000 2000 3000 5000 近似值FK 2.3147e+07 2.9066e+07 3.2156e+07 3.4010e+07 3.4623e+07 3.4928e+07 3.5030e+07 3.5111e+07 误差F-Fk 1.2085e+07 6.1664e+06 3.0761e+06 1.2228e+06 6.0960e+05 3.0430e+05 2.0275e+05 1.2159e+05
利用复合梯形公式计算如下表:
n 50 100 200 500 1000 2000 3000 5000 近似值FK 2.3478e+07 2.9054e+07 3.2139e+07 3.4005e+07 3.4622e+07 3.4928e+07 3.5030e+07 3.5111e+07 误差F-Fk 1.1755e+07 6.1787e+06 3.0939e+06 1.2273e+06 6.1085e+05 3.0463e+05 2.0290e+05 1.2165e+05
由上述两个表格的值我们可以得出,其误差随着n的增大近似值与真实值之间的误差逐渐减少,说明了误差具有收敛性。
13:分别用2点,3点以及5点的Gauss型积分公式计算如下定积分:
(1)?1x21?x2?1dx(2)?2?0sinxdx x解:利用Gauss型求积公式得出:
n 0 1 xk 0 ?0.5773502692 2 ?0.77459666920 高斯型求积公式部分节点、系数表 n Ak xk 2 5 ?0.9324695142 1 ?0.6612093865 ?0.23861918616 ?0.94910791230.5555555556 0.8888888889?0.74153118563 4 ?0.8611363116 ?0.3399810436?0.90617984590.3478548451 0.65214515290.2369268851 7 ?0.5384693101 0 0.4786286705 0.5688888890.40584515140?0.9602898566?0.7966664774 ?0.5255324099?0.1834346425 Ak 0.17132449240.3607615730 0.46791393460.12948496620.2797053915 0.38183005050.41795918370.10122853630.2223810345 0.31370664590.36268378342点Gauss积分公式求解时,n=1;查找上表得x0,x1,A0,A1,把他们都代入,可得
?1x21?x2?1dx?(0.5773502692)21?(0.5773502692)2?(?0.5773502692)21?(?0.5773502692)2?0.8165
3点Gauss积分公式求解时,n=2;查找上表可得x0,x1,x2,A0,A1,A2,把他们都代入,可得:
?1x21?x2?1dx?0.5555555556?(0.7745966692)21?(0.7745966692)222?
0.5555555556?(?0.7745966692)1?(?0.7745966692)?1.05415点Gauss积分公式求解时,n=4;查找上表可得x0,x1,x2,x3,x4,A0,A1,A2,A3,A4,把他们都代入,可得:
?1x22?11?x0.53846931012dx?2?0.2369268851??1.24950.906179845921-0.90617984592?2?0.4786286705?1-0.5384693101
2
?2?02?sinx1sin(?(t?1))sinx2??02??0dx,令x?t???t??则?dx??dt,于是利用
0-1x22xt?1上表计算Gauss积分
2点Gauss积分公式求解时,n=1;查找上表得x0,x1,A0,A1,把他们都代入,可得
1sin(?(t?1))sinxsin(?(1?0.5773502692))dx?dt???0x?-1t?11?0.5773502692
sin(?(1?0.5773502692))?1.68121?0.57735026922?3点Gauss积分公式求解时,n=2;查找上表可得x0,x1,x2,A0,A1,A2,把他们都代入,可得:
1sin(?(t?1))sinxsin(?(1?0.7745966692))dx?dt?0.5555555556??0x?-1t?11?0.7745966692
sin(?(1?0.7745966692))?0.5555555556??1.39951?0..77459666922?5点Gauss积分公式求解时,n=4;查找上表可得x0,x1,x2,x3,x4,A0,A1,A2,A3,A4,把他们都代入,可得:
1sin(?(t?1))sinx51??0xdx??-1t?1dt?0.2369268859))sin(?(1?0.9061798459))??sin(?(1?0.90617984????1?0.90617984591?0.9061798459??2?01))sin(?(1-0.5384693101))??sin(?(1?0.538469310.4786286705????
1?0.53846931011-0.5384693101???1.418114:考虑微分方程初值问题:
1?dx?(tx?x2)?2 ?dt(t?1)?x(0)?2?分别用Euler法,改进的Euler法,Runge-Kutta法求解该方程。分别去步长为0.1,0.01,0.001,计算到x(1),画图说明结果。
Euler法: