文档详情

《应用计算方法教程》matlab作业一答题.docx

发布:2017-04-15约3.16千字共9页下载文档
文本预览下载声明
作业一 1-1实验目的:寻求高效算法 实验内容:设,给出两个算法,求,写出MATLAB程序,并统计计算法计算量。若要计算量不超过20flop,应如何设计算法? 算法一 算法: 令,依次计算,最后用。 程序: n=1023; t=1+1/n; t0=t; for i=1:10 t=t^2; end t=t/t0; disp(t);界面: 计算量:12flop 算法二 算法: 直接计算t的1023次方。 程序: n=1023; t=1+1/n; x=t^1023; disp(x);界面: 计算量:1024flop 若要计算量不超过20flop,采用第一种算法较合适。 作业二 3-5 实验目的:应用不同迭代法求解代数方程 实验内容:分别采用二分法、Newton法、Newton下山法、割线法求解方程 在[0.1,1]中的根;精确到。 二分法 算法: 为连续函数,且由题意可知[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。重复上述过程直到达到精度要求为止。 程序: function y=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) for k=1:max p=(b+a)/2; if f_3_5(p)==0 || (b-a)/2e break; elseif f_3_5(a)*f_3_5(p)0 a=p; else b=p; end end界面: Newton法 算法: 建立牛顿迭代格式 直到小于精度要求时迭代结束,将作为结果输出。 程序: function y=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) for k=1:max p=p0-f_3_5(p0)/f2_3_5(p0); if abs(p-p0)e break; end p0=p; end界面: Newton下山法 算法: 建立迭代格式 其中是下山因子,在每步迭代中依次取1,1/2,1/4,…直到满足精度要求。 程序: function [p,k]=lab3_5_Newton2(max,p0,tol,e) for k=1:max y=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); end if abs(p-p0)tol break; end p0=p; end界面: 割线法 算法: 建立迭代格式 直到小于精度要求时迭代结束,将作为结果输出。 程序: function [p,k]=lab3_5_Secant(max,a,b,e) for k=1:max p=b-f_3_5(b)*(b-a)/(f_3_5(b)-f_3_5(a)); if abs(p-b)e break; end a=b; b=p; end界面: 作业三 4-2 实验目的:熟悉LU分解法求解方程。 实验内容:用MATLAB编程做Doolittle分解,求解方程组。 算法: 对进行Doolittle分解使得,则线性方程组的求解问题就转化为对三角形方程组的求解。Doolittle分解过程为: 然后依次求解和: 程序: function [L,U,x]=lab4_2(a,b) n=length(a); L=eye(n); U(1,:)=a(1,:); for k=2:n if U(k-1,k-1)==0 disp(·??aê§°ü); return; end L(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); if kn a(k+1:n,k)=a(k+1:n,k)-L(
显示全部
相似文档