《数值计算方法matlab程序.pdf》由会员分享,可在线阅读,更多相关《数值计算方法matlab程序.pdf(18页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-二分法functon x0,k=bse1(fun1,a,b,e)fnarginx0f,fb;k=0;return;edk=1;whle bs(-a)/epx=(a+)2;fx=feal(fun1,x);if fx*fa0;f=fx;elsea=;f=f;=+;endend0=(a+)/2;fun1inln(x3-x-1);0,kbisect1(fun1,1.3,14,1e-)=.32=7简单迭代法fnctio x0,teat1(un1,0,ep,N)ifnar4N=50;enif nrginep&k funnlie((x1)(13));x0,k=iterae1(fun1,15)x0 1.32
2、47k=7 fun1iie(31);x0,kteat(fun,1.5)x0=Infk=9Sefese加速迭代(简单迭代法的加速)funco x0,k=seffs1(un1,x0,e,N)narinN=50;endif nargin3p1e-5;end=0;0=x+2ep;k=;wle abs(x-x)e k1=inlin(x+)(13);x0,kstefesen1(f,1.5)x0=1.347k=fu1=inli(x3-1);0,k=steffeen1(fun1,15)x0=1.3247kNet迭代functin x,Newtn7(fame,dfname,x0,e,)i nargn5N=500
3、;endi agep&k fname=inle(-cos(x));nam=iine(1+in(x));x0,ewon(fn,dnm,i/,1e8)x=0.79k=-非线性方程求根的aab 函数调用举例:1.求多项式的根:求(x)=x3x-1的根:oots(10 1-)a=1.3247-0.6624+0563-064-.5623i2求一般函数的根 u=in(x*sin(2x-1),)fun=Inlne function:fun(x)x*sn(x2x-)fpot(fun,2 0.1);grid ox=fzero(un,-,1)-1595=fzero(fu,-1-.1)=-0.680 x,f,h=f
4、olve(,-1)x=1.5956f=-14009h=1(h0 表示收敛,h0 表示发散,h=0 表示已达到设定的计算函数值的最大次数)第三章:线性方程组的数值解法1 高斯消元法uto,=gaus3(A,b)%本算法用顺序高斯消元法求解线性方程组negth(b);A=A,b;or=1:n-(k1):n,(k+1):(n1)=((k+1):,(k+1):(n+1)-A(k1):n,)/A(,k)*A(k,(k+1):(n+1));A(k+):n,k)zeros(n-k,);endxeo(n,1);%上面为消元过程x(n)=A(n,+1)/A(n,n);fo=n-1:-1:x(k)=(A(k,n+
5、1)(,(+1):)*((k+1:n)))/A(,);ed%上面为回代过程 A=2 ;2;4 3 3;b=,32b=532A,x=gss3(,b)A 20000.000006.00000.5000-4.0000-.000002.0000-4.000=-1382列选主元的高斯消元法:-uction,x=gaus5(,b)本算法用列选主元的高斯消元法求解线性方程组=gh();A=A,b;fo k=:n-1%选主元ap,m(abs(A(k:n,k);p=+k-1;if pkt=A(k,:);(k,:)=(p,:);A(p,:)=t;en消元A(k+):,(k+1):())=A(k+1):n,(+1)
6、:(n+))A(k+):,k)A(k,k)*A(,(k+1):(n+1);A(k1):n,)ro(nk,1);nd%回代xzros(,1);x(n)A(n,+1)/(n,n);for kn1:1:1(k)=(A(k,n+)-A(k,(k):n)x(sk1:n))/(,k);end=2 3;3 2;43;b=6,5,32;A,x=gauss5(,b)=003.00000.000300000.5020.5-19.000.1818063x=1382三角分解法:Dooltle 分解funcin,U=dlittl1()nlegt(A);Uzeos(n);L=ey();(1,:)=A(1,:);L(2:n
7、,1)=A(2:n,)/U(,1);-fork=2:n(,k:)A(k,:n)-L(k,1:k1)U(1:k1,k:);L(k+1:,k)=A(+1:n,)-(k1:,1:k-)*(1:k-1,n)/(,k);nyzo(n,);x=;()=b(1);for i=2:ny()=b(i)L(i,1:i-1)*(1:-1);end(n)=y(n)/U(n,n);r i-1:-1:(i)(y(i)-U(i,i+1:n)*(i+1:)/U(,i);en A=1 3;2 5 2;3 ;=118 20;L,U,xdoolittle(A,)L=100213-1U=1230-0-3x=2.83331.33328
8、33平方根法:funcin L,xcoesy3(A,b)n=lngh(A);=zeros(n);L(:,1)=(:,1)/sqrt(A(1,);for k=2:n(k,)A(,k)L(,:1)*L(k,1:k-1);L(k,k)sqr(L(,k));for i=k+:n(,k)(A(,k)L(i,:k1)*L(,:-))/L(,k);ndendy=ers(n,);-x=;()=b(1)L(,1);2:y(i)(b(i)-L(i,1:i-)*(1:i1))/L(i,i);endx(n)=()/L(,n);for in-1:-1:1(i)=(y(i)-L(i+1:n,)*x(i+1:n))/L(i
9、,);end=4-1 1;-.252.7;1 2.75 3.5A=4.00-.000010000-1.000425002500100005003.500 b=4 6 7.25b=4.00006.00007250L,xchoesy3(A,b)2.0000-0.500.00000.001.001.00 x 1迭代法求方程组的解abi 迭代法:uncio,k=jaobi2(a,b,x0,ep,N)%本算法用 Jacbi 迭代求解=b,用分量形式n=length(b);k0;if nargin5=50;nif nrginep=e5;enf nainp&Nk=k1;x0=x;o 1:(i)=b(i);f
10、rj=:if=iy(i)=y(i)(i,j)*x0(j);endndif abs((i,i))e10|k=Nwarig(a(i,)stoo small);tuend()=y(i)/a(i,i);end=y;eda=4 3;3 -;0-1;b=4 3-24;x,k=acobi2(,)x=3.0004.00-5.000=59ausseidel 迭代法:function x,kausssed2(a,b,0,e,N)%本算法用 Gausseidel 迭代求解 a=,用分量形式n=lent(b);=0;f narginN=50;i nagin4e=;ndif nrgine&Nk=k+1;x=x;y=x;
11、or i=1:nz(i)=b(i);fo j=1:nf=iz(i)=z(i)-(,j)*x(j);ndndif ab(a(i,)e-10|k=Naning(a(,i)is oo sal);returnendz(i)=z(i)/a(i,i);(i)=(i);ndenx,k=gasd2(a,b)x=3.0004.000-.000k=2-最速下降法最速下降法unctionx,k=uisxiajiang(,b,x0,ep,N)%本算法用最速下降算法求解正定方程组A=b,n=egh(b);ifnagin5N500;ndi nain4p=e-8;eif arin3 x0=o es(n,1);end=x0;
12、0=x+2*e;r=bA*x;d=;=;whil orm(x-0,inf)p kN k=k+1;x=x;amda(dd)/(Ad);x=xlamda;r=b-A*;d=;enif k=Nwaing(已达最大迭代次数)end共轭梯度算法共轭梯度算法functo x,k=gogeridfa(A,x0,p,N)%本算法用共轭梯度算法求解正定方程组Ax=b,,=length(b);i nan5 N=5 0;endif nrgin4 ep=1e-;end-if nrin3x0=ones(,1);ndx=x;x0=+*e;rb-A*x;d=r;=;whil or(x-0,inf)ep&kdun=inline(y-2*y);x,y=rungekut(dfun,0,1,0.2)0.0.4 0 6 0.1y=1182 1.34171.483 1.6 25.7321y-yans=-0 1.33 1e-05.643e-005 4.1 6e-056.2492e-005 9 175e-005-