数值分析matlab程序_第1页
数值分析matlab程序_第2页
数值分析matlab程序_第3页
数值分析matlab程序_第4页
数值分析matlab程序_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数值分析(matlab程序)曹德欣 曹璎珞第一章 绪论数值稳定性程序,计算P11 试验题一积分function try_stable global n global a a=input(a=); N = 20; I0 = log(1+a)-log(a); I = zeros(N,1); I(1) = -a*I0+1; for k = 2:N I(k) = - a*I(k-1)+1/k; end II = zeros(N,1); if a=N/(N+1) II(N) = (1+2*a)/(2*a*(a+1)*(N+1); else II(N) =(1/(a+1)*(N+1)+1/N)/2; en

2、d for k = N:-1:2 II(k-1) = ( - II(k) +1/k) / a; end III = zeros(N,1); for k = 1:N n = k; III(k) = quadl(f,0,1); end clc fprintf(n 算法1结果 算法2结果 精确值) for k = 1:N, fprintf(nI(%2.0f) %17.7f %17.7f %17.7f,k,I(k),II(k),III(k) endfunction y = f(x) global n global a y = x.n./(a+x); return第二章 非线性方程求解下面均以方程y=x

3、4+2*x2-x-3为例:1、二分法function y=erfen(a,b,esp) format long if nargin3 esp=1.0e-4; end if fun(a)*fun(b)esp if fun(a)*fun(c)0 b=c; c=(a+b)/2; elseif fun(c)*fun(b)=1.0e-4) & (n=1.0e-4) & (n=) %判断两个条件截止 x0=x1; %将x1赋给x0 x1=x2; %将x2赋给x1 x2=x1-fun(x1)*(x1-x0)/(fun(x1)-fun(x0); %迭代运算 n=n+1; end y=x2 nfunction

4、y=fun(x) y=x4+2*x2-x-3;第四章题目:推导外推样条公式:,并编写程序与Matlab的Spline函数结果进行对比,最后调用追赶法解方程组。解:设的二阶导数值,因为在上是三次多项式,所以在上是一次多项式,且可表示为 (1)对式(1)进行两次积分可得: (2)由式(2)根据和可得系数为:, (3)将式(3)代入式(2)可得为:分别对和进行求导,并根据两者相等整理得: (4)其中,但是要解给定的方程组,还需要两个另外的条件,而外推样条插值的条件可通过下面推理得出:令式(1)中的等于,可得: (5) (6)令式(4)中,然后将式(5)代入得: (7)令式(4)中,然后将式(6)代入

5、得: (8)将方程组(4)和式(7)、式(8)联立展开即得题目所求。按照推导出的外推样条插值公式编程可得如下M文件(spline_wt.m)function spline_wtX=0 1 2 3 4 5;Y=0 0.5 2 1.5 3.5 1.9;% 调用自编程序S = spline_w(X,Y); %调用matlab提供程序S1=spline(X,Y);fnplt(S,r,2); % 作图hold onfnplt(S1,b,1);hold onplot(X,Y,or); % 画上节点title(红线为自编程序曲线,蓝线为自带程序曲线)% pp的第j行表示第j个三次多项式的4系数并写出分段多项

6、式pp = S.coefs P1 = poly2str(pp(1,:),(x-0) P2 = poly2str(pp(2,:),(x-1) P3 = poly2str(pp(3,:),(x-2)ppp=S1.coefs PP1 = poly2str(ppp(1,:),(x-0) PP2 = poly2str(ppp(2,:),(x-1) PP3 = poly2str(ppp(3,:),(x-2)function sp = spline_w(X,Y)n = length(X); h = diff(X); d = diff(Y)./h; d1(2:n-1)=6*diff(d)./(h(1:n-2)

7、+h(2:n-1); mu(2:n-1)=h(1:n-2)./(h(1:n-2)+h(2:n-1); mu(n-1)=1-h(n-2)/h(n-1); la(2:n-1)=1-mu(2:n-1); la(2)=1-h(1)/h(2);% 计算三对角方程组 a = mu(3:n-1); b = 2*ones(n-2,1); b(1)=2+h(1)/h(2); b(n-2)=2+h(n-2)/h(n-1); c = la(2:n-2); u(1:n-2) = d1(2:n-1);% 调用追赶法解方程组 M(2:n-1) = tridiag(a,b,c,u); M(1)=(1+h(1)/h(2)*M

8、(2)-M(3)*h(1)/h(2);M(n)=(1+h(n-1)/h(n-2)*M(n-1)-M(n-2)*h(n-1)/h(n-2);% 下面计算分段多项式的四个系数S=zeros(n-1,4);for k=0:n-2S(k+1,1)=(M(k+2)-M(k+1)/(6*h(k+1);S(k+1,2)=M(k+1)/2;S(k+1,3)=d(k+1)-h(k+1)*(2*M(k+1)+M(k+2)/6;S(k+1,4)=Y(k+1);end sp = mkpp(X,S);%转换成 Matlab 格式% - 求解三对角线性方程组的追赶法 -function x=tridiag(a,b,c,d

9、)n = length(d); x = zeros(n,1); for k = 2:n b(k) = b(k) - a(k-1)*c(k-1)/b(k-1); d(k) = d(k) - a(k-1)*d(k-1)/b(k-1); end x(n) = d(n)/b(n); for k = n-1:-1:1 x(k) = ( d(k)-c(k)*x(k+1) ) / b(k);end根据所编写的程序可得三次多项式及系数为(包括自编和提供):pp = -0.9511 3.3533 -1.9022 0 -0.9511 0.5000 1.9511 0.5000 1.7556 -2.3533 0.09

10、78 2.0000 -1.5711 2.9133 0.6578 1.5000 -1.5711 -1.8000 1.7711 3.5000P1 =-0.95111 (x-0)3 + 3.3533 (x-0)2 - 1.9022 (x-0)P2 =-0.95111 (x-1)3 + 0.5 (x-1)2 + 1.9511 (x-1) + 0.5P3 =1.7556 (x-2)3 - 2.3533 (x-2)2 + 0. (x-2) + 2ppp = -0.9511 3.3533 -1.9022 0 -0.9511 0.5000 1.9511 0.5000 1.7556 -2.3533 0.0978

11、 2.0000 -1.5711 2.9133 0.6578 1.5000 -1.5711 -1.8000 1.7711 3.5000PP1 =-0.95111 (x-0)3 + 3.3533 (x-0)2 - 1.9022 (x-0)PP2 =-0.95111 (x-1)3 + 0.5 (x-1)2 + 1.9511 (x-1) + 0.5PP3 =1.7556 (x-2)3 - 2.3533 (x-2)2 + 0. (x-2) + 2根据所编写的程序可得生成的图形如图1所示第五章摘要:针对多项式检验的困难性,文中先将多项式线性化为多元线性问题。在此基础上,简要推导出多元线性拟合的数学模型及系

12、数的最小二乘估计(以二元为例),同时为了检验建立模型的准确性,推导出检验模型的三个指标(误差差方和、相关检验和F检验)计算公式,最后用某矿的煤样实例进行试验研究,得出各次多项式拟合的检验结果。1 多元线性拟合的数学模型设一个随机变量与个一般变量的内在联系是线性的,而且统计相关。与这些之间可用如下线性关系表示: (1)上式称为多元线性拟合的数学模型。式中是个待估参数,这些参数被称为回归系数;是服从的随机变量。多项式拟合可以通过线性化来化为多元线性拟合,如多项式模型为: 对上式线性化,令,即可得如式(1)所示的多元线性模型,因此我们只需讨论多元线性模型即可。为了方便我们采用二次多项式来推导,多次多

13、项式可根据二次近似得到。2 系数的最小二乘估计设给定组实测数据,将其带入式(1)可得个观测方程: (2)式中随机误差是个相互独立且服从的随机变量。令,则式(2)可写为:设是采用最小二乘估计方法求得的估值,则多元线性方程为:,则与实测值之间的差值为:用最小二乘估计,所有实验点上偏差平方和最小的要求下,设,则可得法方程用矩阵表示为:于是, (3)由(3)式解出,即可得多元线性方程模型。3方程模型的检验在实际问题中,事先并不能断定随机变量与一般变量之间是否有线性关系。用组实测数据按最小二乘的方法总能找出回归方程模型。但所得的方程模型是否具有实际意义,需要对所得到的方程模型进行统计检验。本文采用了误差

14、平方和和两种统计方法进行检验。3.1 误差平方和按下式可计算出总差方和:,自由度为因为:=0则可分解为和,称为回归差方和,反映自变量的重要程度自由度为;为误差差方和,反映试验误差及其他因素对试验结果的影响,自由度为。3.2 相关系数检验法一元线性方程中相关系数定义为:,其中,分别表示的均方差和协方差。因为它们是未知的,故用子样均方差和协方差来代替。最后得相关系数的估值: 其中,分别为子样的方差和协方差, 在多元线性方程中,定义复相关系数:,当时,线性关系密切,而当时,线性关系不密切,甚至不存在线性关系。可通过下式计算来得到值: 3.3 F检验如果变量与之间无线性关系,则模型的一次项系数均为零。

15、所以,要检验变量与变量之间是否有线性关系,就是要检验假设是否成立从,得定义可看出两者是独立的,且,则在矩阵满秩和原假设成立的条件下在水平下,若计算的(查F分布表),认为不可信,方程模型效果显著;反之,则认为可信,线性效果不显著,所求方程没有实际意义。4 MATLAB实现及分析实验中取用某煤矿的18个煤样,所得的18组数据列于表1,分析容重和灰分之间的关系。表1取样数据表样品号123456789101112容重x1.51.21.71.41.81.31.31.51.71.31.51.5灰分y%25430203675243341724样品号131415161718容重x1.61.41.61.51.4

16、1.5灰分y%2562624209根据上述数据利用matlab的多项式进行拟合,并得到各次拟合的检验结果如表2,表2 多项式拟合检验结果表多项式次数1234临界值误差差方和378.2118373.5294369.4278358.566相关检验0.8930.89440.89560.89880.47F检验62.961129.97718.911213.66774.49拟合结果图形见图1图1 多项式拟合效果图从表2中可以看出,随着次数的增加,误差差方和逐渐减少,说明拟合越接近于实际曲线。这也可以通过相关检验的变化得以证明,次数越高,相关系数越接近于1且大于临界值,说明多项式线性化后的模型显著且逐渐接近

17、于线性关系。而F检验的结果(方程显著且大于临界值)却说明当次数增加到一定程度时,拟合模型可能出现不显著,也即拟合模型不可用。从上述分析可以看出,对于一个特定的问题,并不是建立模型的次数越多越接近于真实曲线。当多项式的次数超过F检验结果可用的情况下,高次数的多项式拟合反而成为一种错误的结果。因此,当我们在建立模型时,对建立的模型结果要进行检验,不能只根据某些实验数据拟合结果可用,就用它来进行下一步的预测研究。附录:matlab源码function poly_nihe%多元线性拟合及检验 x=1.5 1.2 1.7 1.4 1.8 1.3 1.3 1.5 1.7 1.3 1.5 1.5 1.6 1

18、.4 1.6 1.5 1.4 1.5;y=25 4 30 20 36 7 5 24 33 4 17 24 25 6 26 24 20 9;nn=length(x);n=1; p=polyfit(x,y,n); xi=linspace(1.2,1.8,100); z=polyval(p,xi); subplot(2,2,1),plot(x,y,o,xi,z) title(一次多项式拟合) ay=mean(y); dy=y-ay; q=0; for i=1:nn q=q+dy(i)2; end ax=mean(x); dx=x-ax; qx=0; for i=1:nn qx=qx+dx(i)2;

19、end cxy=0; for i=1:nn cxy=cxy+dx(i)*dy(i); end r=cxy/sqrt(qx*q) %自由度为16及显著性水平为0.05查相关系数临界值表,得0.468xp=1.5 1.2 1.7 1.4 1.8 1.3 1.3 1.5 1.7 1.3 1.5 1.5 1.6 1.4 1.6 1.5 1.4 1.5;yp1=polyval(p,xp); v=y-yp1; q2=0; for i=1:nn q2=q2+v(i)2; end q2 q1=q-q2; f=q1*(nn-2)/q2 %自由度为16及显著性水平为0.05查F分布表,得4.49n=2; p=po

20、lyfit(x,y,n); xi=linspace(1.2,1.8,100); z=polyval(p,xi); subplot(2,2,2),plot(x,y,o,xi,z) title(二次多项式拟合) %F检验 yp2=polyval(p,xp); v=y-yp2; q2=0; for i=1:nn q2=q2+v(i)2; end q2 q1=q-q2; f=q1*(nn-n-1)/(q2*n) %R相关系数检验 r_2=q1/q; ff=r_2*(nn-n-1)/(1-r_2)*n); r=sqrt(n*f/(nn-n-1+n*f)n=3; p=polyfit(x,y,n); xi=

21、linspace(1.2,1.8,100); z=polyval(p,xi); subplot(2,2,3),plot(x,y,o,xi,z) title(三次多项式拟合) yp3=polyval(p,xp); v=y-yp3; q2=0; for i=1:nn q2=q2+v(i)2; end q2 q1=q-q2; f=q1*(nn-n-1)/(q2*n) %R相关系数检验 r_2=q1/q; ff=r_2*(nn-n-1)/(1-r_2)*n); r=sqrt(n*f/(nn-n-1+n*f)n=4; p=polyfit(x,y,n); xi=linspace(1.2,1.8,100);

22、 z=polyval(p,xi); subplot(2,2,4),plot(x,y,o,xi,z) title(四次多项式拟合) yp4=polyval(p,xp);v=y-yp4;q2=0; for i=1:nn q2=q2+v(i)2; end q2 q1=q-q2; f=q1*(nn-n-1)/(q2*n) %R相关系数检验 r_2=q1/q; ff=r_2*(nn-n-1)/(1-r_2)*n); r=sqrt(n*f/(nn-n-1+n*f)第一题:一:运行图形和结果:1969、1995和2000年的人口为:左图的计算为三次多项式拟合的函数计算而得的结果:单位(亿)1969年人口为:

23、g1969_3 =8.523 1969年人口为:g1995_3 =11.76 1969年人口为:g2000_3 =10.44 偏差平方和为:sumerror3 =0.8482 右图的计算为二次多项式拟合的函数计算而得的结果:单位(亿)1969年人口为:g1969_2 =8.2421969年人口为:g1995_2 =12.1969年人口为:g2000_2 =13.12偏差平方和为:sumerror2 = 0.3744二:源代码(注:把t的值存放在t.txt中,p的值存放在p.txt中,并且把它们和M文件放到同一个文件夹里)clearx=load(x.txt);y=load(y.txt);n=le

24、ngth(x);c(1:n)=1; A=c,x,x.2,x.3;Q,R=qr(A,0);a=R(Q*y);a=fliplr(a); A1=c,x,x.2;Q,R=qr(A1,0);a1=R(Q*y);a1=fliplr(a1); t = 1949:2000; % 三次多项式拟合g = polyval(a,t);plot(x,y,o,t,g,m)hold ony1=a(1)*x.3+a(2)*x.2+a(3)*x+a(4);g1969_3 = polyval(a,1969)g1995_3= polyval(a,1995)g2000_3 = polyval(a,2000)error3=y-y1;s

25、umerror3=error3*error3 g = polyval(a1,t); %二次多项式拟合plot(x,y,o,t,g,r)hold ony2=a1(1)*x.2+a1(2)*x+a1(3);g1969_2 = polyval(a1,1969)g1995_2= polyval(a1,1995)g2000_2 = polyval(a1,2000)error2=y-y2;sumerror2=error2*error2第二题:一:图形及结果:运算结果如下:以上五种拟合方法它们的均方误差如下:sum1 为指数函数拟合 y=a*exp(x)+b 的均方误差。sum2为三次多项式拟合的均方误差。

26、sum3为二次多项式拟合的均方误差。sum4为y2=a*x2+b*x+c 拟合的均方误差。sum 为指数 y=a*exp(b*x) 拟合的均方误差。从均方误差可以看出来,三次多项式的拟合效果较好!二:源代码:(注:把t的值存放在t.txt中,p的值存放在p.txt中,并且把它们和M文件放到同一个文件夹里)cleart=load(t.txt);p=load(p.txt);%-指数函数拟合 y=a*exp(x)+bm=length(t);c(1:m)=1;A1=c,exp(t);Q,R=qr(A1,0);a1=R(Q*p);x=-69.7:100;y=a1(1)+a1(2)*exp(x);axis

27、(-80,100,-500,4000);plot(x,y,m);hold ony1=a1(1)+a1(2)*exp(t);error1=p-y1;sum1=sqrt(error1*error1)/m)%-三次多项式拟合A2=c,t,t.2,t.3;Q,R=qr(A2,0);a2=R(Q*p);a2=fliplr(a2);x=-69.7:100;y = polyval(a2,x);axis(-80,100,-500,4000);plot(x,y,r)y1=a2(1)*t.3+a2(2)*t.2+a2(3)*t+a2(4);error2=p-y1;sum2=sqrt(error2*error2)/

28、m) %-二次多项式拟合A3=c,t,t.2;Q,R=qr(A3,0);a3=R(Q*p);a3=fliplr(a3);x=-69.7:100;y = polyval(a3,x);axis(-80,100,-500,4000);plot(x,y,b)hold ony1=a3(1)*t.2+a3(2)*t+a3(3);error3=p-y1;sum3=sqrt(error3*error3)/m)%- y2=a*x2+b*x+c 拟合y=p.2;x=t;c(1:m)=1;A4=c,x,x.2;Q,R=qr(A4,0);a4=R(Q*y);x=-69.7:100;y=sqrt(a4(3)*x.2+a

29、4(2)*x+a4(1);axis(-80,100,-500,4000);plot(t,p,o,x,y,black);y1=sqrt(a4(3)*t.2+a4(2)*t+a4(1);error4=y1-p;sum4=sqrt(error4*error4)/m)%-指数 y=a*exp(b*x) 拟合y=log(p);x=t;A=c,x;Q,R=qr(A,0);a=R(Q*y);x=-69.7:100;a(1)=exp(a(1);y=a(1)*exp(a(2)*x);axis(-80,100,-500,4000);plot(t,p,o,x,y,g);hold ony1=a(1)*exp(a(2)

30、*t);error=y1-p;sum=sqrt(error*error)/m)附加题第一题二次曲面拟合地表(结合自己专业知识)背景:一般地表是连续的曲面组成的,我们可以根据一些地面已知点(知道三维坐标)用曲面来拟合地表。步骤:首先:我们可以到实地去取样点,就是所说的去实地测量地表点的(X,Y,Z)坐标。在地表均匀地选取一些点进行三维坐标(X,Y,Z),然后我们可以根据所测量的点来拟合地表曲面。其次:根据地表模型,一般用二次曲面来拟合地表,选择拟合公式。Z=f(X,Y)=a1 + a2*X + a3*Y + a4*XY + a5X2 + a6*Y2再次:运用数值分析中的曲线拟合知识。采样点:(x

31、1,y1,z1)(x2,y2,z2)(xm,ym,zm) 基函数:(,一般)函数族:记号:,在这里: 采样点:我们已经实地测量出(X,Y,Z)值。 基函数:由 Z=f(X,Y)=a1 + a2*X + a3*Y + a4*XY + a5X2 + a6*Y2 我们6 个基函数:=1,=x =y=x*y =x2 =y2 我们可以求出 A , 我们用Cholesky分解法求解,但直接计算是极其数值不稳定的,不宜采用。最常用的方法是正交三角分解法(简称QR分解),它间接地对进行了Cholesky分解,其数值稳定性相当好。这里我们借用Matlab分解命令来求解。方法如下:得到,其中的列是规范正交的,即,

32、是非奇异上三角矩阵。此时(间接做了Cholesky分解),法方程为这样只需求解上面上三角方程组,可用这样就求出了二次曲面函数的系数。最后:二次曲面函数绘图。调用MATLAB里的mesh(x,y,z)绘出曲面。绘出的图形如下:注:已知的(x,y,z)坐标是编的!没有进行实地测量!程序代码如下:clearx=load(x1.txt);y=load(y1.txt);z=load(z1.txt);m=length(x);c(1:m)=1;%-用二次曲面拟合地表%-z=a(1)+a(2)*x+a(3)*y + a(4)*x.*y+a(5)*x.2+a(6)*y.2 A=c,x,y,(x.*y),x.2,

33、y.2; Q,R=qr(A,0);a=R(Q*z); T = 1:40;S= 1:40;t,s=meshgrid(T,S);g=a(1)+a(2)*t+a(3)*s + a(4)*t.*s+a(5)*t.2+a(6)*s.2 ; mesh(t,s,g) 注:以上程序中 X1=-6 1 4 2 6 9 12 15 16 10 7 3 8 12 15 11 17 20 14 21 25 24 29 32 28 35 38 30 Y1=1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 Z1=25 27

34、 26 29 35 28 27 15 29 38 46 50 26 20 32 16 29 35 40 56 50 48 43 40 35 31 28 20运行代码之前,把编好的x坐标放在x1.txt,y坐标放在y1.txt,z坐标放在z1.txt并把它们和M文件放在同一个文件夹下。然后就可以运行。第六章题目:求积分方程的数值解,并与精确解比较(精确解为)解:1、理论分析设离散化为,下面求的近似值。对方程中的积分用某个求积公式:近似代替得:记得:这样转化为关于的线性方程组:其中是单位矩阵,2、实验结果及分析采用五等分和七等分的高斯柯特斯公式得到的结果如图1 图1 五、七等分的高斯柯特斯公式积分

35、结果图五等分的高斯柯特斯公式运行结果和精确值分别为:0.849 1.173 1.185 1.336 2.652 2.298精确值为:1.000 1.017 1.127 1.051 2.247 2.905七等分的高斯柯特斯公式运行结果和精确值分别为:0.056 1.778 1.260 1.132 1.729 2.445 2.885 2.343精确值为:1.000 1.511 1.735 1.5211.515 2.614 2.366 2.905八等分的高斯柯特斯公式运行结果和精确值分别为:0.687 1.208 1.786 1.785 1.194 1.650 2.712 2.644 2.464精确

36、值为:1.000 1.683 1.774 1.820 1.013 1.222 2.267 2.710 2.905从图1中可以看出,不管是五等分公式还是七等分公式都具有良好的精度,画出的曲线图和精确值完全重合。但是从得出的数据结果来看,七等分的精度要好于五等分的精度,八等分的精度要好于七等分。虽然八等分的高斯柯特斯公式稳定性不是很好,但是对于计算本题确是稳定的。因此,在使用八等分公式之前要进行分析。如果可用,则具有较好的精度;否则在一般情况下不要使用。3、程序代码:五等分高斯柯特斯公式:function temp clc format long I=eye(6); A=19/288 75/288

37、 50/288 50/288 75/288 19/288; x = linspace(0,1,6); for i=1 : 6 for j= 1:6 k(i,j)=exp(x(i)+x(j); end end for j=1 :6 for i=1:6 K(i,j)=k(i,j)*A(j); end end F=f(x); Y=(I-K)F yyy=exp(x) x1 =0:0.01:1; yy=exp(x1); plot(x,Y,o,x1,yy,b) function s=f(x) for i=1:6 s(i)=1.5*exp(x(i)-0.5*exp(x(i)+2); end七等分高斯柯特斯公

38、式:function temp clc format long I=eye(8); A=751/17280 3577/17280 1323/17280 2989/17280 2989/17280 1323/17280 3577/17280 751/17280; x = linspace(0,1,8); for i=1 : 8 for j= 1:8 k(i,j)=exp(x(i)+x(j); end end for j=1 :8 for i=1:8 K(i,j)=k(i,j)*A(j); end end F=f(x); Y=(I-K)F yyy=exp(x) x1 =0:0.01:1; yy=e

39、xp(x1); plot(x,Y,o,x1,yy,b) function s=f(x) for i=1:8 s(i)=1.5*exp(x(i)-0.5*exp(x(i)+2);end八等分高斯柯特斯公式:function temp clc format long I=eye(9); A=989/28350 5888/28350 -928/28350 10496/28350 -4540/28350 10496/28350 -928/28350 5888/28350 989/28350; x = linspace(0,1,9); for i=1 : 9 for j= 1:9 k(i,j)=exp(

40、x(i)+x(j); end end for j=1 :9 for i=1:9 K(i,j)=k(i,j)*A(j); end end F=f(x); Y=(I-K)F yyy=exp(x) x1 =0:0.01:1; yy=exp(x1); plot(x,Y,o,x1,yy,b) function s=f(x) for i=1:9 s(i)=1.5*exp(x(i)-0.5*exp(x(i)+2);end%-5点高斯-勒让德公式A1=0. 0. 0. 0. 0.;I1=eye(5);t=-0. -0. 0. 0. 0.;x=0.5.*t+0.5;for i=1 : 5 for j= 1:5

41、k1(i,j)=exp(x(i)+0.5.*t(j)+0.5); end end for j=1 :5 for i=1:5 K1(i,j)=k1(i,j)*A1(j); end end F1=f1(x); F1=F1; Y1=(I1-0.5.*K1)F1 yyyy=exp(x) x1 =0:0.01:1; yy=exp(x1); plot(x,Y1,mo,x1,yy,g) function s1=f1(x) for i=1:5 s1(i)=1.5*exp(x(i)-0.5*exp(x(i)+2); end %-复化的辛甫生公式 I=eye(10); x=linspace(0,1,11); fo

42、r i=1 :10 for j=1:10 K(i,j)=exp(x(i)+x(j)+4*exp(x(i)+x(i+1)/2+(x(j)+x(j+1)/2)+exp(x(i+1)+x(j+1); end end F2=f2(x); Y2=(I-(1/60)*K)F2 x2=x(1:10); yyy=exp(x2) plot(x2,Y2,*,x2,exp(x2),g) function s2=f2(x) for i=1:10 s2(i)=1.5*exp(x(i)-0.5*exp(x(i)+2); end 老师提供例子1.1 % exp1_1.m - 算法的数值稳定性实验% 见 P1 例1 求积分 % I(n) = exp(-1)*int( xn*exp(x),0,1 )% 参见 P2表1-1 和 P5表1-2function try_stableglobal n % 定义全局变量 n ,见后自定义函数 f 中的参量 N = 20; % 计算 N 个值%-% 【算法1】用递推公式(P2 (1-2)式) % I(k) = 1 - k*I(k-1)% 取初值 I0=1-exp(-1) (约有15位有效数字) % 注 如果取 I0 = 0.632

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论