《数值分析报告(共14页).docx》由会员分享,可在线阅读,更多相关《数值分析报告(共14页).docx(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上数值分析上机实习报告 2015年12月目 录专心-专注-专业序 言本次上机实习全部以MATLAB7.0软件作为运算环境进行方程组求解、数值积分、微分的求解。MATLAB(MATrixLABoratory)是1984年MathWork公司研发一种广泛应用于工程计算以及数值分析领域的新型高级语言。经过多年的发展与竞争已经成为国际公认的最优秀的工程应用开发环境。MATLAB功能强大、简单易学、编程效率较高,深受广大科技工作者欢迎。MATLAB具有高效的数值计算以及符号计算功能,能使用户能够使用户从繁杂的数学运算分析中解脱出来;同时,MATLAB还具有完备的图形处理功能,实现
2、计算结果和编程的可视化;具有友好的界面用户界面和接近数学表达式的自然化语言,更贴近使用者的思路;具有丰富的应用工具箱(如信号处理工具箱、通信工具箱等),为用户提供了大量方便使用的处理工具。MATLAB具有以下一些优势:(1)友好的工作平台和编程环境;(2)简单易用的程序语言;(3)强大的科学计算机数据处理能力;(4)出色的图形处理功能;(5)应用广泛的模块集合工具箱;(6)使用的程序接口和发布平台;(7)应用软件开发(包括用户界面)。选用MATLAB作为本次上机实验的实验环境主要有以下原因:(1)MATLAB语言是的运算过程更加贴近于数学语言,运算过程方便学习相关内容的知识点一级公式等;(2)
3、MATLAB的计算结果可以直接显示函数运算图像,直观清晰地分析计算结果;(3)MATLAB对于一些数值运算过程来说,直接提供了运算方法,比如,一些特殊的矩阵和一些特定的函数,可以直接在运算和程序过程中表达,这为计算的简洁化带来很大的帮助;(4)MATLAB语言的数据运算功能较为强大,充分满足计算精度。1 Newton和Newton-Steffensen迭代法求解比较1.1 计算题目分别用牛顿法,及基于牛顿算法下的Steffensen加速法求:1)ln(x+sinx)=0的根,初值x0分别取0.1, 1,1.5, 2, 4进行计算。2)sinx=0的根,初值x0分别取1,1.4,1.6, 1.8
4、,3进行计算。分析其中遇到的现象与问题1.2 计算过程与结果 求方程ln(x+sinx)=0的解即求方程x+sinx=1的解。使用Newton法,令f(x)=x+sinx-1,则f(x)=cosx+1,直至|xk+1-xk|=1e-8 %设置精度 xi=z; Y1=subs(y1,x,z); %计算函数值 Y=subs(y,x,z); Y1=double(Y1); Y=double(Y); z=z-Y/Y1; n=n+1; if n100 %通过循环控制迭代步数 n=0; z=0; break; end endndouble(z)(2)clc,clearsyms xformat longy1=
5、diff(sin(x),x);y=sin(x);z=input(input);n=0; xi=0; while abs(xi-z)=1e-8 xi=z; Y1=subs(y1,x,z); Y=subs(y,x,z); Y1=double(Y1); Y=double(Y); z=z-Y/Y1; n=n+1; if n100 n=0; z=0; break; end endndouble(z)2.Steffensen法计算程序(1)clc,clearsyms xformat longy1=diff(log(x+sin(x),x);y=log(x+sin(x);z=input(input)n=0;x
6、i=eps();z1=0;z2=0; while abs(xi-z)=1e-8 xi=z; Y1=double(subs(y1,x,z); Y=double(subs(y,x,z); z1=z-Y/Y1; Y2=double(subs(y1,x,z1); YY=double(subs(y,x,z1); z2=z1-YY/Y2; z=z-(z1-z).2/(z2-2*z1+z); n=n+1; if n100 n=0; z=0; break; end endndouble(z)(2)clc,clearsyms xformat longy1=diff(sin(x),x);y=sin(x);z=in
7、put(input)n=0;xi=eps();z1=0;z2=0; while abs(xi-z)=1e-8 xi=z; Y1=double(subs(y1,x,z); Y=double(subs(y,x,z); z1=z-Y/Y1; Y2=double(subs(y1,x,z1); YY=double(subs(y,x,z1); z2=z1-YY/Y2; z=z-(z1-z).2/(z2-2*z1+z); n=n+1; if n100 n=0; z=0; break; end endnz附录B 插值多项式和多项式拟合程序(1)多项式拟合计算程序clc;clear;x=1 2 3 4 5 6
8、7 8 9 10;y=34.6588 40.3719 14.6448 -14.2721 -13.3570 24.8234 75.2795 103.5743 97.4847 78.2392;n=input(拟合多项式次数 );p=polyfit(x,y,n); %曲线拟合函数,给定n+1个点将可以唯一确定一个n阶多项式a=poly2sym(p); %将多项式的向量形式转换为对应的系数的数值形式digits(4); %保留4位有效数字f(x)=vpa(a); %将系数a转换为小数xi=linspace(0,11,100); %在0到11之间产生100个点yi=polyval(p,xi); %求出多
9、项式在xi值plot(x,y,kO,xi,yi,b,LineWidth,3);legend(原始数据,多项式拟合,2);%对照数据与近似函数对比程序clc;clear;x=1.5:0.4:7.9;y1=42.1498 41.4620 35.1182 24.3852 11.2732 -1.7813 -12.3006 -18.1566 -17.9069 -11.0226 2.0284 19.8549 40.3626 61.0840 79.5688 93.7700 102.3677;y=0.01936*x.6 - 0.5408*x.5 + 5.114*x.4 - 16.9*x.3 - 0.867*x
10、.2 + 66.38*x - 18.7;plot(x,y1,kO,x,y,b,LineWidth,3)legend(对照数据,近似函数f(x),2)max(abs(y-y1)/y1) %近似函数与对照数据最大计算相对误差(2)插值多项式程序clc;clear;x=1:1:10;y=34.6588 40.3719 14.6448 -14.2721 -13.3570 24.8234 75.2795 103.5743 97.4847 78.2392;%样本点x1=1:0.02:10; %要插值点y1=interp1(x,y,x1); %线性插值y2=interp1(x,y,x1,spline); %
11、三次样条插值y3=interp1(x,y,x1,cubic); %三次Hermite插值plot(x1,y1 y2 y3,-,x,y,ko,LineWidth,1);legend(线性插值,三次样条插值,三次Hermite插值,样本点,2);附录C 四阶Runge-Kutta算法function y=rk4(f,h,a,b,y0)f=(x,y)(-20*y);N=(b-a)/h;y=zeros(N+2,1);R=zeros(N+2,3);z=zeros(N+2,1);y(1)=y0;x=a:h:b;for i=2:N+2 %Runge-Kutta算法过程 K1=feval(f,x(i-1),y(i-1); K2=feval(f,x(i-1)+h/2,y(i-1)+K1*h/2); K3=feval(f,x(i-1)+h/2,y(i-1)+K2*h/2); K4=feval(f,x(i-1)+h,y(i-1)+h*K3); y(i)=y(i-1)+h*(K1+2*K2+2*K3+K4)/6; z(i-1)=y(i-1)-exp(-20*x(i-1); R(i-1,:)=x(i-1),y(i-1),z(i-1)endrk4(f,0.1,0,1,1)rk4(f,0.2,0,1,1)