文档详情

数学实验“非线性方程的分法,迭代法,Aitken迭代法,Steffensen迭代法”实验报告(内含matlab程序代码).doc

发布:2017-03-25约2.76千字共10页下载文档
文本预览下载声明
西京学院数学软件实验任务书 课程名称 数学软件实验 班级 数0901 学号 0912020107 姓名 李亚强 实验课题 非线性方程的二分法,迭代法,松弛迭代法,Aitken迭代法,Steffensen迭代法 实验目的 熟悉非线性方程的二分法,迭代法,松弛迭代法,Aitken迭代法,Steffensen迭代法 实验要求 运用Matlab/C/C++/Java/Maple/Mathematica等其中一种语言完成 实验内容 非线性方程的二分法 非线性方程的迭代法 非线性方程的松弛迭代法 非线性方程的Aitken迭代法 非线性方程的Steffensen迭代法 成绩 教师 实验六实验报告 实验名称:非线性方程的二分法,迭代法,松弛迭代法,Aitken迭代法,Steffensen迭代法。 实验目的:进一步熟悉理解掌握最速下降法与共轭梯度法解法思路熟悉非线性方程的二分法,迭代法,松弛迭代法,Aitken迭代法,Steffensen迭代法,提高matlab编程能力。 实验要求:非线性方程,应用二分法,迭代法,松弛迭代法,Aitken迭代法,Steffensen迭代法编程求解非线性方程的数值解。 实验原理: 二分法: 设函数在区间上连续,而且,则在区间上至少有一个根。 首先确定有限区间:依据零点定理。设 ,且,则方程 在区间上至少有一个根。如果在上恒正或恒负,则此根唯一。 令若,则为有根区间,否则为有根区间。记新的有根区间为, 则且;对重复上述做法得:且 设所求的根为,则,即,由得 取为的近似解。 不动点迭代法 对于非线性方程:常常可以化成等价的方程可以选取一个初始近似值,构造迭代序列 如此产生序列。这种迭代方法称为不动点迭代,或Picard 迭代。这个原理看似很容易直观理解,但是却有相当深刻的数学内涵,数学系的学生在泛函分析与微分方程理论等多门专业课程里都会遇到。如果连续,而且,则是的一个不动点。因此为方程的一个根。 Aitken加速迭代 由初值出发,计算出后,便可在曲线上找到两个点。将这两点所在的直线与直线的交点设为,则点满足:解得:,将视为新的初值,重复上述步骤可得,由此产生迭代公式,。 Steffensen迭代法 该迭代法解方程可以看成是另一种不动点迭代:其中迭代函数为得到迭代公式为: ; 实验内容: %二分法解非线性方程 function er_fen(f,a,b,esp); f1=subs(f,a); f2=subs(f,b); if f1*f20 disp(该方程在【a,b】上无解!); elseif f1==0 root=a; elseif f2==0 root=b; else a0=a; b0=b; A=[]; while abs((b0-a0)/2)=esp half=(a0+b0)/2; fa=subs(f,a0); fb=subs(f,b0); fhalf=subs(f,half); if fhalf==0 root=half; break; elseif fa*fhalf0 b0=half; else a0=half; end A=[A,half]; end root=(b0+a0)/2; end root A %不动点迭代(Picard迭代) function [x,time]=Picard(f,x0,tol) %结果给出迭代次数 %x0 为迭代初值 %tol 为误差容限 if(nargin==2) tol=1.0e-5; end wucha=0.5; %设置误差初值 x1=x0; %x1 与x0 为前后两次计算结果 time=0; %用于记录迭代次数 while(wuchatol) x1=subs(f,x0)+x0; %迭代计算 wucha=abs(x1-x0); x0=x1; % 更新x0的值在循环中这一句非常重要 time=time+1; %记下迭代次数 end x=x1; %Aitken加速收敛方法 function [gen,time]=Aitken(func,x0,tol) if(nargin==2) tol=1.0e-5; end gen=x0; x(1:2)=[0,0]; t=0; %记录迭代次数 m=0; x2=x0; wucha=0.1; %设置误差初值 while(wuchatol) t=t+1; %记下累积
显示全部
相似文档