数值分析作业.doc
上传人:sy****28 上传时间:2024-09-12 格式:DOC 页数:5 大小:102KB 金币:16 举报 版权申诉
预览加载中,请您耐心等待几秒...

数值分析作业.doc

数值分析作业.doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

16 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

《数值分析实验报告》实验题目:非线性方程求根一、实验目的1、通过实验进一步了解方程求根的算法;2、认识选择计算格式的重要性;3、掌握迭代算法和精度控制;4、明确迭代收敛性与初值选取的关系。二、实验要求1、编制一个程序进行运算,最后打印出每种迭代格式的敛散情况;2、用事后误差估计来控制迭代次数,并且打印出迭代的次数;3、初始值的选取对迭代收敛有何影响;4、分析迭代收敛和发散的原因。三、实验问题设方程有三个实根现采用下面六种不同计算格式,求f(x)=0的根或1、2、3、4、5、6、四、实验过程与结果结果当初始点为-20,迭代格式敛散情况迭代次数所得结果1发散2发散3收敛18-1.5320894收敛7-0.3472965收敛71.8793856收敛12-1.532088当初始点为-2,迭代格式敛散情况迭代次数所得结果1收敛43-1.5320882发散3收敛16-1.5320894收敛8-0.3472965收敛71.8793856收敛5-1.532088当初始点为1.8,迭代格式敛散情况迭代次数所得结果1发散2收敛10-0.3472963收敛101.8793844收敛8-0.3472965收敛61.8793856收敛41.879385当初始点为20,迭代格式敛散情况迭代次数所得结果1发散2发散3收敛131.8793854收敛7-0.3472965收敛71.8793856收敛111.879385五、结果分析与讨论此次通过与同学交流和上网找资料,得出了比较合理的结果,但还存在一些问题,而且对迭代算法和精度控制,掌握的还不够好。六、附程序1、针对具体迭代格式的迭代算法functionnon_linearroots(index,x0)%非线性方程求根,有种迭代格式,其中1,2局部收敛,3发散,4,5,6全局收敛clcif(mod(index,1)~=0||index<0||index>6)'请输入1至6的整数来选择一个迭代格式'return;endsymssymbol_xyupsilong=1e-6;%计算精度%输入迭代格式funHYPERLINKmailto:@fai1=[@fai1,@fai2HYPERLINKmailto:@fai3,@fai3,@faiHYPERLINKmailto:@fai54,@fai5HYPERLINKmailto:@fai6,@fai6];tolerance_iteration=1000;%最多可容忍1000次迭代count_iteration=0;%记录迭代次数flag=1;%记录敛散状态delta=1;x1=x0;x2=x0;whiledelta>=yupsilongif(count_iteration>tolerance_iteration||abs(x1)>1e9)flag=0;break;endendwarningoff;x2=feval(fun(index),x1);warningoff;delta=abs(x2-x1);x1=x2;count_iteration=count_iteration+1;if(flag==0)'迭代格式发散'elsex1count_iterationendfunctionfai1=fai1(symbol_x)fai1=(3*symbol_x+1)/(symbol_x^2);functionfai2=fai2(symbol_x)fai2=(symbol_x^3-1)/3;functionfai3=fai3(symbol_x)fai3=(3*symbol_x+1)^(1/3);functionfai4=fai4(symbol_x)fai4=1/(symbol_x^2-3);functionfai5=fai5(symbol_x)fai5=sqrt(3+1/symbol_x);functionfai6=fai6(symbol_x)fai6=symbol_x-1/3*((symbol_x^3-3*symbol_x-1)/(symbol_x^2-1));%牛顿法迭代格式2、检验初始点和迭代收敛情况的关系functionnon_linearroots2(index)%检验迭代格式敛散性和初始点关系,index是具体的迭代格式索引if(nargin<1)index=1;endif(mod(index,1)~=0||index<0||index>6)'请输入1至6的整数'return;end%初始点选取和迭代收敛的