《割线法求解非线性方程.doc》由会员分享,可在线阅读,更多相关《割线法求解非线性方程.doc(5页珍藏版)》请在三一办公上搜索。
1、MATLAB语言及应用大作业姓名:学号:学院:班级:题目编号: 割线法求解非线性方程一、 割线法的数学理论割线法原理:牛顿迭代法的收敛速度快,但是每迭代一次,除需计算飞f(x)的值外,还要计算f(x)的值外。如果f(x)比较复杂,计算f(x)的工作量就可能很大。为了避免计算导数值,我们用差商来代替导数。设经过k次迭代后,与求xk-1。用f(x)在xk,两点的差商来代替牛顿迭代公式中的导数值f(xk),于是我们得到如下迭代公式:二、割线法的算法和流程图 f(x)=0 迭代次数大于N算法失败输入:N, x0 , 开始输出:x1三、割线法的Matlab实现编辑m文件:Secant.m functio
2、npl,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)for k=1:max1 p2=p1-feval(f,pl)*(pl-p0)/feval(f,pl)-feval(f,p0); err=abs(p2-p1); p0=p1; p1=p2; k,pl,err,y=feval(f,pi);if(err,delta)(y=0),break,endend四、割线法的算例实现例: 非线性方程 y=x3+2x0.205061208 .建立gexianfa.m源程序,源程序代码为:functionx=gexian(f,x0,x1,e)ifnarginez=x-(feval(f,x)*(x-y)/(feval(f,x)-feval(f,y); y=x;x=z;end在matlab软件中执行下列语句clearfun=inline(x3+2*x-0.205061208);gexianfa(fun,0,1,1e-6),formatshortn=5ans=0.1020