ImageVerifierCode 换一换
格式:DOCX , 页数:41 ,大小:29.80KB ,
资源ID:24880807      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/24880807.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(王能超计算方法算法设计及MATLAB实现课后代码.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

王能超计算方法算法设计及MATLAB实现课后代码.docx

1、王能超计算方法算法设计及MATLAB实现课后代码第一章插值方法1. 1 Lagrange 插值1.2逐步插值1. 3分段三次Hermite插值1.4分段三次样条插值第二章数值积分Simpson 公式变步长梯形法Romberg加速算法三点Gauss公式第三章常微分方程徳差分方法 改进的Euler方法 四阶Runge-Kutta方法 二阶Adams预报校正系统I改进的四阶Adams预报校正系统第四章方程求根二分法开方法Newton下山法 快速弦截法第五章线性方程组的迭代法 Jacobi迭代Gauss-Seidel 迭代 超松弛迭代 对称超松弛迭代第六章线性方程组的直接法 追赶法Cholesky 方

2、法 矩阵分解方法6. 4 Gauss列主元消去法第一章插值方法1. 1 Lagrange 插值 计算Lagrange插值多项式在x=xO处的值.MATLAB文件:(文件名:)Sfunction yO,N= Lagrange eval(X,YtxO)%X.Y是已知插值点坐标叙0是插值点%y0是Lagrange插值多项式在xO处的值%N是Lagrange插值函数的权系数m=length(X);N=zeros(mt1);y0=0;for i=l:mN(i)=l;for j=l:mif J =1;N(i)=N(i)*(xO-X(j)/(X(i)-X(j);endendyO=yO+Y(i)*N(i);e

3、nd用法X=-;Y=-;xO二;yO,N= Lagrange_eval(X,Y,xO)1.2 逐步插值计算逐步插值多项式在x=xO处的值.MATLAB文件:(文件名:)function yO=Nevi1le eval(X,Y,xO)%X,Y是已知插值点坐标%x0是插值点%y0是Neville逐步插值多项式在xO处的值 m=length(X);P=zeros(m,1);Pl二zeros(m.1);P=Y;for i=l:mPl 二 P;k 二 1;for j=i+l:mk=k+l;P(j)=Pl(j-l) + (Pl(j)-Pl(j-l)*(xO-X(k-l)/(X(j)-X(k-l);endi

4、f abs(P(m)-P(m-1)=X(i)& xO=X(i+l)k=i: break:endendal=xO-X(k+l);a2=xO-X(k);a3= X(k)- X(k+1);y0= (al/a3)2*(l-2*a2/a3)*Y(k) + (-a2/a3)*2*(1+2*a1/a3)*Y(k+1) +(a1/a3)2*a2*DY(k) + (-a2/a3)2*a1*DY(k+1);用法X=-;Y=关于X的函数;DY=Y; xO=插值横坐标;yO=Hennite interp(X,Y,DY,xO)1.4分段三次样条插值计算在插值点处的函数值,并用来拟合曲线.MATLAB文件:(文件名:)f

5、unction yO,C=Spline interp(X,Y,sO,sN,xO)%X,Y是已知插值坐标%sO,sN是两端点的一次导数值%x0是插值点%y0三次样条函数在xO处的值%C是分段三次样条函数的系数N=length(X);C二zeros (4.NT) ; h=zeros (1 ,N-1);mu=zeros (1 NT) ; 1 mt二zeros (1, NT); d=zeros(l ,N): %d表示右端函数值 h=X(L2:N)-X(l,l:N-l);mu(l.N-l)=l; lmt (1,1)=1; mu(lJ:N-2)=h(l,l:N-2)/(h (lt l:N-2)+h(l,2

6、:N-l); lmt(l,2:N-l)=h(lr2:N-l)/(h(ltl:N-2)+h(l,2:N-l);d(l,l)=6*(Y(l,2)-Y(l,l)/h(l,l)-sO)/h(l,l); d(ltN)=6*(sN-(Y(hN)-Y(ltN-l)/h(l,N-l)/h(ltN-l); d(lt2:N-l)=6*(Y(l,3:N)-Y(lt2:N-l)/h(l,2:N-l)-(Y(l,2:N-l)-Y(ltl:N-2)/h(l,l:N-2)/(h(l J:N-2)+h(l,2:N-l); 冬追赶法解三对角方程组bit=zeros(1,N-1);bit(l,l)=lmt(l,l)/2;for

7、i=2:NTbit (lt i)=lmt (1, i)/(2-mu(1, i-l)*bit(l, il):end y=zeros(l,N); y(l,l)=d(l,l)/2; for i=2:Ny(l, i) = (d(l, i)-mu(l, i-l)*y(l, i-l)/(2-mu(l, iT)*bit(l, iT); endx=zeros(l,N);x(l.N)=y(l,N);for i=N-l:-l:1x(l, i)=y(l, i)-bit (1, i)*x(l, i+1);endv=zeros(ltN-l);v(lJ:N-l) = (Y(l,2:N)-Y(l J:N-l)/h(l ,1

8、:N-1);C(4,:)=Y(1,1:N-1);&C(3,:)=v-h*(2*x(l J:N-l)+x(l,2:N)/6;C(2,:)=x(l,l:N-l)/2;C(lt:) = (x(l,2:N)-x(l J:N-l)/(6*h);if nargin二X(l.j)& xOX(l.j+l)omg二xO-X(l.j);y0=(C(4,j)*omg+C(3j)omg+C(2,j)*omg+C(1j); endendend算例1:给定数据表:Xiyi试求三次样条插值函数S(x),其中:S =.S三解:X=,;Y=,;sO二;sN=;yO,C=Spl ine inteip(Xt Y, sO, sN,

9、xO);plot::, polyval (C(: 1) ,0: : / r-.);hold onplot::,polyval(C(:. 2) ,0: :, 1 bJ );plot::, polyval (C(:. 3) ,0: : / k* );plot::,polyval(C(:. 4)t0::);第二章数值积分Simpson 公式利用复化Simpson公式求被积函数f(x)在给定区间上的积分值. MATLAB文件:(文件名:)function S=FSimpson(f,a,btN)%f表示被积函数句柄險i,b表示被积区间端点%N表示区间个数%S是用复化Simpson公式求得的积分值h=(b

10、-a)/N;fa=feval(f,a):fb=feval(f,b);S二fa+fb;x=a;for i=l:Nx二x+h/2;fx=feval(f,x);S=S+4*fx;x=x+h/2;fx=feval(ftx);S=S+2*fx;endS=h*S/6;算例2:利用复化Simpson公式计算枳分S=一竺J()4 + ;r解:后面都要用到的fl:function f=f1(x)f= x/(4+x2);令 f=fl;a=0;b=l;运行 S=FSimpson(f,a, b,N)这里的N值需要自己输入。变步长梯形法利用变步长梯形法求被积函数f(x)在给定区间上的积分值.MATLAB文件:(文件名:

11、)function T.n=bbct(f,a,b,eps)%f表示被积函数句柄%a,b被积区间端点%eps精度%T是用变步长梯形法求得的积分值%n表示二分区间的次数h=b-a;fa=feval(f,a); fb=feval(f, b);Tl=h*(fa+fb)/2;T2=Tl/2+h*feval(f,a+h/2)/2;n=l;%按变步长梯形法求积分值wh订e abs(T2-Tl)=epsh=h/2;T1=T2;S=0;x=a+h/2;wh i1e xepsJ=J+1;h=h/2;S=0;for p=1:Mx=a+h*(2*p-l);S=S+feval(f,x):endR(J+l,l)=R(JJ

12、)/2+h*S;M=2*M;for k=l:JR(J+l,k+l)=R(J+lk) + (R(J+lk)-R(J.k)/(4k-l); endserr=abs(R(J+l,J)-R(J+l,J+l);endquad=R(J+l,J+l);算例4:利庄Romberg加速算法计算积分7? = | .解:function f=f1(x)f=x/(4+x2);令 f=0fl;a=O;b=l;运行quad, R=Romberg(f, a, b,eps)这里的eps值需要自己输入。三点Gauss公式利用三点Gauss公式计算被积函数f(x)在给定区间上的积分值.MATLAB文件:(文件名:)functio

13、n G=TGauss(f,a,b)%f表示被积函数句柄%a,b被积区间端点%G是用三点Gauss公式求得的积分值xl=(a+b)/2-sqrt(3/5)*(ba)/2;x2=(a+b)/2+sqrt(3/5)* (b-a)/2;G=(b-a)*(5*feval(f,xl)/9+8*feval(f,(a+b)/2)/9+5*feval(ftx2)/9) /2:算例5:利用三点Gauss公式计算积分/? = f J()4 + 十I解:function 仁f1(x)f=x/(4+x2);令 f=fl;a=0;b=l;运行 G=TGauss(fta,b)第三章 常微分方程徳差分方法改进的Euler方法

14、用改进的Euler方法求解常澈分方程.MATLAB文件:(文件名:)function EMendEuler(f,a,b,N,ya)%f是微分方程右端函数句柄%a,b是自变量的取值区间a,b的端点絃是区间等分的个数y(O) = l,Oxy(O) = l,Oxl,用四阶Runge-Kutta方法求解.dxfunction z=f2(x,y)z=x*2-y;为衡呈数值解的精度,我们求出该方程的解析解为y = -+x2-2x + 2.在此也以文件 的形式表示如下:function y=solvef2(x)y二-exp(-x)+x2-2*x+2 ;令 f=f2; a=0; b=l; N=10; ya=l

15、;运行:R=RungKutta4(fta,b,N,ya);y=solvef2(a:(b-a)/N:b);m=R,y其中m内的y表示准确解精度比前者高.二阶zdams预报校正系统用二阶Adams预报校正系统求解常微分方程. MATLAB文件:(文件名:)function A=dams2PC(f,a,b,N,ya)%f是微分方程右端函数句柄%a,b是自变量的取值区间a,b的端点%N是区间等分的个数%ya表初值y (a)%A=x ,y是自变量X和解Y所组成的矩阵 h= (b-a) /N;x二zeros(1,7+1); y=zeros(l,N+l); x=a:h:b; y(l)=ya; for i=l

16、:N1if i=lyl=y(i)+h*feval (f, x(i),y (i); y2=y(i)+h*feval (f,x(i + l) tyl): y(i+l) = (yl+y2)/2;dyl=feval(f,x(i) ,y(i); dy2=feval (f,x(i+l) ,y(i+l):elsey(i+l)=y(i)+h*(3*dy2-dyl)/2;P=feval(f.x(i+l).y(i+l);1y(i+1)=y(i)+h*(P+dy2)/2;dyl=dy2;dy2=feval(f,x(i+1),y(i+1):endendAxf 1;改进的四阶Adams预报校正系统用改进的四阶Adams

17、预报校正系统求解常微分方程. MATLAB文件:(文件名:)function A=CAdams4PC(f,a,b,Ntya)%f是微分方程右端函数句柄%a,b是自变量的取值区间a,b的端点 龈是区间等分的个数%ya表初值y(3)%A=x, ,y是自变量X和解Y所组成的矩阵 if N4break:endh=(b-a)/N;x二zeros(1,7+1); y=zeros(l,N+l);x=a:h:b;y(l)=ya;F二zeros (1,4);for i=l:Nif i4 滋用四阶Runge-Kutta方法求初始解 kl=feval (f tx(i) ty(i);k2=feval(f,x(i)+h

18、/2,y(i)+(h/2)*kl); k3=feval(f,x(i)+h/2,y(i)+(h/2)*k2);k4=feval(ftx(i)+h,y(i)+h*k3);y(i +1)=y(i) + (h/6)*(kl+2*k2+2水k3+k4); elseif i=4玄预报%校正F=feval(ftx(i-3:i),y(i-3:i); py=y(i) + (h/24) (F*-9,37.-59,55); p=feval(f,x(i+1),py);F=F(2) F(3) F(4) p; y(i+l)=y(i) + (h/24)*(F*lt-5,19,9J );p二py; c=y(i+1):else

19、F=feval (ftx(i-3: i) ,y(i-3: i);py=y (i) + (h/24)*(F*-9,37,-59,55 ) ; %预报my=py-251 * (p-c)/270; 滋改进m=feval(ftx(i+l),my);F=F(2) F(3) F(4) mJ;cy=y(i) + (h/24)*(F*1,-5.19,9 ) ; %校正y (i+1) =cy+19* (py-cy) /270; % 改进p二py; c=cy;endend甘x ,y,;附件(补充):四阶Adams预报校正系统的程序:MATLAB文件:(文件名:)function A=Adams4PC(f#a,b,

20、N,ya)%f是微分方程右端函数句柄%a,b是自变量的取值区间a,b的端点%N是区间等分的个数%ya表初值y (a)%A=x ,y是自变量X和解Y所组成的矩阵if N4break;endh=(b-a),/N;x=zeros(l,N+l);y=zeros(l,N+l);x=a:h:b;y(l)=ya;F二zeros (1,4);for i=l:Nif i4 玄用四阶Runge-Kutta方法求初始解kl=feval(f.x(i),y(i):k2=feval (f. x(i) +h/2, y (i) + (h/2)*kl);k3=feval (f.x(i)+h/2,y(i) + (h/2)*k2)

21、;k4=feval(ftx(i)+h,y(i)+h*k3):y(i + l)=y(i) + (h/6)*(kl+2*k2+2*k3+k4);elseF=feval (ftx(i3: i) ,y(i-3: i):py=y(i) + (h/24)*(F*-9,37,-59,551,); %预报p=feval(ftx(i+l),py);F=F(2) F(3) F(4) p;y(i+l)=y(i) + (h/24)*(F*l,-5,19,91, ); %校正endenda二x y 1;算例&分别用二阶Adams预报校正系统,四阶Adams预报校正系统和改进四阶Adams预报 dy校正系统求解如下微分方

22、程初值问题:- = -y + x + ty(O) = Wxemgif fab=Ox=(a+b)/2;return;elseif fa*fab0b=(a+b)/2;elsea=(a+b)/2;endfa=feval(ffa);fab=feval(f,(a+b) /2); k二k+1;endx=(a+b)/2;算例9:求解方程/(x) = Vx2+l-tanx在区间0山/2 內的实根,使精度达到10? 解:function f=func2(x)If=sqrt(x 2+1)-tan(x);输入:f=func2; a=0; b二pi/2; emg二 10-5;xO,k=demimethod(a,b,f,emg)开方法求实数的开方运算.MATLAB文件:(文件名:)functio

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1