资源描述:
《计算方法书中的MATLAB实例.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、用Matlab实现求积分在Matlab程序编辑器中输入:y0=log(6.0/5.0);fprintf('y[%d]=%f',0,y0)n=1;while(1)yl=1.0/n-5*y0;fprintf('y[%d]=%f',n,yl)if(n>=20)break;endy0=yl;n=n+1;end程序运行结果:functionx=nabisect(fname,a,b,e)%fname为内嵌函数表达式;a,b为区间端点;e为输入定义的精度ifnargin<4,e=1e-4;end;%n
2、argin为输入变量的个数,若未输入精度变量,则给定默认精度fa=feval(fname,a);fb=feval(fname,b);%计算端点的函数值iffa*fb>0,error('函数在两端点值必须异号');endx=(a+b)/2while(b-a)>(2*e)fx=feval(fname,x);iffa*fx<0,b=x;fb=fx;elsea=x;fa=fx;endx=(a+b)/2end程序如下:Matlab应用举例(二分法)程序运行结果:用Matlab实现Newton迭代法求解fu
3、nctionx=nanewton(fname,dfname,x0,e,N)ifnargin<5,N=500;end%N为迭代次数ifnargin<4,e=1e-4;end%设置默认精度x=x0;x0=x+2*e;k=0;whileabs(x0-x)>e&k4、在Matlab程序编辑器中输入:functionx=nagauss(a,b,flag)%解线形方程组ax=b,a为系数矩阵,b为右端列向量,flag若为0,则显示中间过程,否则不显示,默认为0,x为解向量ifnargin<3,flag=0;endn=length(b);a=[a,b];%消元fork=1:(n-1)a((k+1):n,(k+1):(n+1))=a((k+1):n,(k+1):(n+1))-a((k+1):n,k)/a(k,k)*a(k,(k+1):(n+1));a((k+1):n
5、,k)=zeros(n-k,1);ifflag==0,a,endend%回代x=zeros(n,1);x(n)=a(n,n+1)/a(n,n);fork=n-1:-1:1x(k,:)=(a(k,n+1)-a(k,(k+1):n)*x((k+1):n))/a(k,k);end程序运行结果:用Matlab实现选列主元Gauss消去法解线性方程组在Matlab程序编辑器中输入:functionx=nagauss2(a,b,flag)%a为系数矩阵;b为右端列向量;flag若为0,则显示中间过程,否则不
6、显示ifnargin<3,flag=0;endn=length(b);a=[a,b];%选主元fork=1:(n-1)[ap,p]=max(abs(a(k:n,k)));p=p+k-1;ifp>k,t=a(k,:);a(k,:)=a(p,:);a(p,:)=t;end%消元a((k+1):n,(k+1):(n+1))=a((k+1):n,(k+1):(n+1))-a((k+1):n,k)/a(k,k)*a(k,(k+1):(n+1));a((k+1):n,k)=zeros(n-k,1);iffl
7、ag==0,a,endend%回代x=zeros(n,1);x(n)=a(n,n+1)/a(n,n);fork=n-1:-1:1x(k,:)=(a(k,n+1)-a(k,(k+1):n)*x((k+1):n))/a(k,k);end程序运行结果:用Matlab实现LU分解在Matlab程序编辑器中输入:function[L,U]=nalu(a)%a为可逆方阵;L返回单位下三角矩阵;U返回上三角矩阵n=length(a);U=zeros(n,n);L=eye(n,n);U(1,:)=a(1,:);
8、L(2:n,1)=a(2:n,1)/U(1,1);fork=2:nU(k,k:n)=a(k,k:n)-L(k,1:k-1)*U(1:k-1,k:n);L(k+1:n,k)=(a(k+1:n,k)-L(k+1:n,1:k-1)*U(1:k-1,k))/U(k,k);end程序运行结果:用Matlab实现Lagrange插值:functionyy=nalagr(x,y,xx)%x为节点;y为节点值;xx为插值点;yy为返回值m=length(x);n=length(y);ifm~=n,error('