资源描述:
《割线法求解非线性方程》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、《MATLAB语言及应用》大作业姓名:学号:学院:班级:题目编号:2割线法求解非线性方程一、割线法的数学理论割线法原理:牛顿迭代法的收敛速度快,但是每迭代一次,除需计算飞f(x)的值外,还要计算f’(x)的值外。如果f(x)比较复杂,计算f(x)’的工作量就可能很大。为了避免计算导数值,我们用差商来代替导数。 设经过k次迭代后,与求xk-1。用f(x)在xk,两点的差商来代替牛顿迭代公式中的导数值f’(xk),于是我们得到如下迭代公式:-4-二、割线法的算法和流程图f’(x)=0迭代次数大于N算法失败输入:N,x0,εη开始输出:x1-4-三、割线法的Matlab实现编辑m文件:
2、Secant.mfunction[pl,err,k,y]=secant(f,p0,p1,delta,max)%f是给定的非线性函数%p0,p1为初始值%delta为给定误差界%max1是迭代次数的上限%p1为所求得的方程的近似解%err为p1-p0的绝对值%k为所需要的迭代次数%y=f(pl)k=0,p0,pl,feval(‘f’,p0),feval(‘f’,pl)fork=1:max1p2=p1-feval(‘f’,pl)*(pl-p0)/feval(‘f’,pl)-feval(‘f’,p0);err=abs(p2-p1);p0=p1;p1=p2;k,pl,err,y=feva
3、l(‘f’,pi);if(err,delta)|(y==0),break,endend-4-四、割线法的算例实现例:非线性方程y=x3+2x−0.205061208.建立gexianfa.m源程序,源程序代码为:function x=gexian(f,x0,x1,e)if nargin<4,e=1e-4;endy=x0;x=x1;while abs(x-y)>ez=x-(feval(f,x)*(x-y))/(feval(f,x)-feval(f,y)); y=x;x=z;end在matlab软件中执行下列语句>> clear>> fun=inline('x^3+
4、2*x-0.205061208');>> gexianfa(fun,0,1,1e-6),format shortn = 5 ans = 0.1020-4-