资源描述:
《非线性方程论文-张天翼(修复的)》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、五种迭代法解非线性方程编程实践张天翼(学院:土木工程学院、学号:2015210056)摘要:使用对分法、牛顿法、简易牛顿法、steffensen法和割线法共五种迭代法解非线性方程,利用MATLAB软件,对上述五种算法进行编程实践。并通过计算结果、收敛速度和使用时间,对五种算法就行对比和优化。最后使用若干个实例行进数值实验报告的编写。关键词:非线性方程;使用对分法;牛顿法;简易牛顿法;steffensen法;割线法;数值实验引言在科学研究和科学计算中常常碰到非线性方程求解问题,非线性方程的解一般不能解析求出,通过计算机使
2、用MATLAB软件,可以対非线性方程进行数值解的求解,下面将介绍五种迭代法在MATLAB里的实现程序。2五种算法在MATLAB中的程序实现2.1对分法2.1.1算法介绍及实现方法使用对分法的前提条件是:第一,函数在闭区间g,b]中连续;笫二,函数在区间g,b]中存在零点,即闭区间两端点处函数值f(a)和f(b)异号。具体计算思想和方法为:计算区间c二Q+b)/2中点处函数值f(c),若f(a)f(c)<0,则说明区间[a,c]中存在零点。进而将c赋值于b,在进行上述操作,通过若干次迭代得到接近函数零点的解。计算的理论停
3、止准则为f(c)二0,编程时可通过以下三个条件作为停止准则:(1)给定最大循环次数;(2)f(c)的值足够小;(3)闭区间长度足够小。2.1.2MATLAB程序代码formatlonga=input('闭区间下限');b二input('闭区间上限');M=input('最大循环次数');f=inlineCx*2-cos(x)*)%输入函数u=f(a),v=f⑹;fork=l:M;e=b~a,e=e/2,c=a+e,w=f(c);ifabs(e)<0.0000011
4、abs(w)<0.000001;elseifsign(
5、w)^=sign(u);b=c,v=w;elsea=c,u=w;kendendc2.2牛顿法2.2.1算法介绍及实现方法对于方程f(x)二0,若己知根的一个近似值,可将f(x)在处展成一阶泰勒公式并取其线性部分近似,归纳为:通过若干次迭代得到方程的近似解。但是对于在零点处导数为零和导数不存在的函数,牛顿法无法进行求解。计算过程中停止准则为(1)给定最大循环次数;x—x(2)z?+l”足够小,即收敛不明显;(3)函数值足够小。2.2.2MATLAB程序代码formatIong,symsxy二xJ-cos(x)%输入函数M
6、二input('最大循环次数');v=diff(y);x=inputC计算起始位置');fork=l:Mu=subs(y,'x‘,x);v=subs(v,'x‘,x);ifabs(u)<0.00001
7、abs(u/v)<0.00001;elsex二x-u/v;kendendx2.3简易牛顿法2.3.1算法介绍及实现方法为克服牛顿法无法计算零点处不可导的缺点,将函数的导数FZ,替换为初始点时的导数,然后在进行迭代。即:2.3.2MATLAB程序代码formatlong,symsxy二x八2-cos(x)%输入函数x=in
8、put('计算起始位置')input('最大循环次数');fork=l:Mu=subs(y,'x‘,x);ifabs(u)<=0.00001;elsex二x-u/2;kendendx2.4stenffensen法2.4.1算法介绍及实现方法2.4.2MATLAB程序代码formatlong,symsxy二x"2-cos(x)%输入函数x=input('计算起始位置');M=input('最大循环次数');fork=l:Mifabs(x)<0.00001elseu二subs(y,'xx);v二subs(y,',x+u
9、);x=x-iT2/(v-u);kendendx2.5割线法2.5.1算法介绍及实现方法割线法将牛顿法屮的尸&丿换为函数上两点之间割线的差商即:Xn-心-1通过这种替代,由此得到如下算法:輕Jf'(乙)-f'(G)心+i=x“—fix)—Lx“-s」计算吋,首先规定两个初始点,然后进行若干次循环计算。割线法的停止准则为:(1)给定最大循环次数;(2)函数值足够小;x—x(3)/?+1“足够小,即收敛不明显。2.5.2MATLAB程序代码format1ong,symsxy二x"2-cos(x)%输入函数a=input('
10、计算起始位置')b=input('计算起始位置')M=input('最大循环次数')fork=l:M;存在月•不等于零,故可适用于以上五种算法。u=subs(y,'x‘,o);v=subs(y,'x‘,b);ifc=a-u*(b-a)/(v-u);b=a,v=u,a二c;abs(u)<=0.00001
11、abs(b~a)<=0.00