资源描述:
《数值计算方法matlab程序.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、数值计算方法matlab程序二分法function[x0,k]=bisect1(fun1,a,b,ep)ifnargin<4ep=1e-5;endfa=feval(fun1,a);fb=feval(fun1,b);iffa*fb>0x0=[fa,fb];k=0;return;endk=1;whileabs(b-a)/2>epx=(a+b)/2;fx=feval(fun1,x);iffx*fa<0b=x;fb=fx;elsea=x;fa=fx;k=k+1;endendx0=(a+b)/2;>>fun1=inline('x^3-x-1');>>[x0
2、,k]=bisect1(fun1,1.3,1.4,1e-4)x0=1.3247k=7>>简单迭代法function[x0,k]=iterate1(fun1,x0,ep,N)ifnargin<4N=500;endifnargin<3ep=1e-5;endx=x0;x0=x+2*ep;数值计算方法matlab程序k=0;whileabs(x-x0)>ep&k>fun1=inline('(x+1)^(1/3)');>>[
3、x0,k]=iterate1(fun1,1.5)x0=1.3247k=7>>fun1=inline('x^3-1');>>[x0,k]=iterate1(fun1,1.5)x0=Infk=9>>Steffesen加速迭代(简单迭代法的加速)function[x0,k]=steffesen1(fun1,x0,ep,N)ifnargin<4N=500;endifnargin<3ep=1e-5;endx=x0;x0=x+2*ep;k=0;whileabs(x-x0)>ep&k4、;x=x0-(y-x0)^2/(z-2*y+x0);k=k+1;endx0=x;ifk==N数值计算方法matlab程序warning('已达最大迭代次数')end>>fun1=inline('(x+1)^(1/3)');>>[x0,k]=steffesen1(fun1,1.5)x0=1.3247k=3>>fun1=inline('x^3-1');>>[x0,k]=steffesen1(fun1,1.5)x0=1.3247k=6Newton迭代function[x0,k]=Newton7(fname,dfname,x0,ep,N)ifnargin
5、<5N=500;endifnargin<4ep=1e-5;endx=x0;x0=x+2*ep;k=0;whileabs(x-x0)>ep&k>fname=inline('x-cos(x)');>>dfname=inline('1+sin(x)');>>[x0,k]=Newton7(fname,dfname,pi/4,1e-8)x0=0.7391k=4数值计算方法matlab
6、程序非线性方程求根的Matlab函数调用举例:1.求多项式的根:求f(x)=x^3-x-1=0的根:>>roots([10-1-1])ans=1.3247-0.6624+0.5623i-0.6624-0.5623i2.求一般函数的根>>fun=inline('x*sin(x^2-x-1)','x')fun=Inlinefunction:fun(x)=x*sin(x^2-x-1)>>fplot(fun,[-20.1]);gridon>>x=fzero(fun,[-2,-1])x=-1.5956>>x=fzero(fun,[-1-0.1])x=-0.
7、6180[x,f,h]=fsolve(fun,-1.6)x=-1.5956f=数值计算方法matlab程序1.4909e-009h=1(h>0表示收敛,h<0表示发散,h=0表示已达到设定的计算函数值的最大次数)第三章:线性方程组的数值解法1.高斯消元法function[A,x]=gauss3(A,b)%本算法用顺序高斯消元法求解线性方程组n=length(b);A=[A,b];fork=1:n-1A((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)
8、:(n+1));A((k+1):n,k)=zeros(n-k,1);A;endx=zeros(n,1);%上面为消元过程x(n)=A(n