《应用计算方法教程》matlab作业一

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

作业一1-1实验目的:寻求高效算法实验内容:设1x1nnn,给出两个算法,求1023x,写出MATLAB程序,并统计计算法计算量。若要计算量不超过20flop,应如何设计算法?算法一算法:令11tn,依次计算2481024,,,,tttt,最后用1024/tt。程序:n=1023;t=1+1/n;t0=t;fori=1:10t=t^2;endt=t/t0;disp(t);界面:计算量:12flop算法二算法:直接计算t的1023次方。程序:n=1023;t=1+1/n;x=t^1023;disp(x);界面:计算量:1024flop若要计算量不超过20flop,采用第一种算法较合适。作业二3-5实验目的:应用不同迭代法求解代数方程实验内容:分别采用二分法、Newton法、Newton下山法、割线法求解方程4326005502002010xxxx在[0.1,1]中的根;精确到410。二分法算法:432()600550200201fxxxxx为连续函数,且由题意可知[0.1,1]为含根区间,令a=0.1,b=1,取p=(a+b)/2。若f(p)=0则p是方程f(x)=0的解;若f(a)f(p)0则根在(a,p)内,取a1=a,b1=p;否则根在区间(p,b)内,取a1=p,b1=b。重复上述过程直到达到精度要求为止。程序:functiony=f_3_5(x)y=600*x^4-550*x^3+200*x^2-20*x-1;function[p,k]=lab3_5_Bisection(max,a,b,e)fork=1:maxp=(b+a)/2;iff_3_5(p)==0||(b-a)/2ebreak;elseiff_3_5(a)*f_3_5(p)0a=p;elseb=p;endend界面:Newton法算法:建立牛顿迭代格式432132()600550200201()600*4*550*3*40020nnnnnnnnnnnnfppppppppfpppp直到1||nnpp小于精度要求时迭代结束,将1np作为结果输出。程序:functiony=f2_3_5(x)y=600*4*x^3-550*3*x^2+400*x-20;function[p,k]=lab3_5_Newton(max,p0,e)fork=1:maxp=p0-f_3_5(p0)/f2_3_5(p0);ifabs(p-p0)ebreak;endp0=p;end界面:Newton下山法算法:建立迭代格式432132()600550200201()600*4*550*3*40020nnnnnnnnnnnnfppppppppfpppp其中是下山因子,在每步迭代中依次取1,1/2,1/4,…直到满足精度要求。程序:function[p,k]=lab3_5_Newton2(max,p0,tol,e)fork=1:maxy=1;p=p0-y*f_3_5(p0)/f2_3_5(p0);while(abs(f_3_5(p))=abs(f_3_5(p0))&ye)y=y/2;p=p0-y*f_3_5(p0)/f2_3_5(p0);endifabs(p-p0)tolbreak;endp0=p;end界面:割线法算法:建立迭代格式111()()()nnnnnnnppppfpfpfp直到1||nnpp小于精度要求时迭代结束,将1np作为结果输出。程序:function[p,k]=lab3_5_Secant(max,a,b,e)fork=1:maxp=b-f_3_5(b)*(b-a)/(f_3_5(b)-f_3_5(a));ifabs(p-b)ebreak;enda=b;b=p;end界面:作业三4-2实验目的:熟悉LU分解法求解方程。实验内容:用MATLAB编程做Doolittle分解,求解方程组。12345123451234512345123451.32.43.44.22.41.43.76.3223.66.85.52.5436.63.61.55.32.86.2xxxxxxxxxxxxxxxxxxxxxxxxx算法:对1.3112.43.42.4111.43.72123.66.82.51436.61.5115.32.8A进行Doolittle分解使得ALU,则线性方程组Axb的求解问题就转化为对三角形方程组LybUxy的求解。Doolittle分解过程为:1,1,2,,jijuajn1111/,2,3,,iilauin11,iijijikkjkualuij11()/,jijijikkjjjklaluuij然后依次求解Lyb和Uxy:1111,2,3,,iiiijjjybyblyin1/()/,1,2,,1nnnnniiijjiijixyuxyuxuinn程序:function[L,U,x]=lab4_2(a,b)n=length(a);L=eye(n);U(1,:)=a(1,:);fork=2:nifU(k-1,k-1)==0disp('·Ö½âʧ°Ü');return;endL(k:n,k-1)=a(k:n,k-1)/U(k-1,k-1);U(k,k:n)=a(k,k:n)-L(k,1:k-1)*U(1:k-1,k:n);ifkna(k+1:n,k)=a(k+1:n,k)-L(k+1:n,1:k-1)*U(1:k-1,k);endendy=zeros(n,1);y(1)=b(1);fori=2:ny(i)=b(i)-L(i,1:i-1)*y(1:i-1);endx=zeros(n,1);x(n)=y(n)/U(n,n);fori=n-1:-1:1x(i)=(y(i)-U(i,i+1:n)*x(i+1:n))/U(i,i);end界面:作业四编写高斯顺序消元法求解下面方程组的程序及计算结果。123123123106.2+1028.52+53.2xxxxxxxxx算法:对1,2,,1kn(k1)(k1)(k)(k1)(k1)(k)(k1)(k1)/,,1,2,,ikikkkijijikkjiiikkmaaaamaijkknbbmb公式中(0)(0),,,1,2,,ijijiiaabbijn。利用回代法求解得方程组的解为(1)(1)(1)(1)(1)1/()/,1,2,,1nnnnnnnkkkkkkjjkkjkxbaxbaxaknn程序:functionx=lab4_Gauss(b)n=size(b,1);fork=1:n-1if(b(k,k)==0)disp('¸ß˹˳ÐòÏûÔª·¨Ê§°Ü');returnendfori=k+1:nm=b(i,k)/b(k,k);b(i,k:n+1)=b(i,k:n+1)-m*b(k,k:n+1);endendx=zeros(n,1);x(n)=b(n,n+1)/b(n,n);fori=n-1:-1:1x(i)=(b(i,n+1)-b(i,i+1:n)*x(i+1:n))/b(i,i);end界面:作业五编写Jacobi迭代法和Seidel迭代法求解上述方程组的程序,并计算出结果。算法:Jacobi迭代格式为(1)()()123(1)()()213(1)()()1120.10.10.620.10.20.850.40.20.64kkkkkkkkkxxxxxxxxxSeidel迭代格式为(1)()()123(1)(1)()213(1)(1)(1)1120.10.10.620.10.20.850.40.20.64kkkkkkkkkxxxxxxxxx程序:Jacobi迭代法function[x,k]=lab5_Jacobi(a,b,x0,e,N)x=x0;n=length(x);k=1;whilek=Nfori=1:nx(i)=(b(i)-a(i,:)*x0)/a(i,i)+x0(i);endifnorm(x-x0)ereturn;endk=k+1;x0=x;endSeidel迭代法function[x,k]=lab5_Seidel(a,b,x0,e,N)x=x0;n=length(x);k=1;whilek=Nfori=1:nx(i)=(b(i)-a(i,:)*x)/a(i,i)+x(i);endifnorm(x-x0)ereturn;endk=k+1;x0=x;end界面:

1 / 9
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功