《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文件:
function[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)
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,end
end
四、割线法的算例实现
例: 非线性方程 y=x3+2x− .
割线法求解非线性方程 来自淘豆网m.daumloan.com转载请标明出处.