牛顿法和割线法Word文档下载推荐.docx
《牛顿法和割线法Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《牛顿法和割线法Word文档下载推荐.docx(6页珍藏版)》请在冰点文库上搜索。
%delta为允许误差
x=xa;
fa=eval(fx);
x=xb;
fb=eval(fx);
fori=1:
n
xc=(xa+xb)/2;
x=xc;
fc=eval(fx);
X=[i,xc,fc];
iffc*fa<
xb=xc;
elsexa=xc;
end
if(xb-xa)<
delta,break,end
End
二分法结果:
迭代34次,xc=0、5149
牛顿法
function[X]=newton(fx,e,x0,m)
x=x0;
k=0;
F=eval(fx);
ifabs(F)<
=e
X=[xF];
disp(X);
return
end
whilek<
=m
x=x0;
g=eval(diff(fx));
x1=x0-F/g;
x=x1;
k=k+1;
ifabs(F)<
X=[x1Fk];
return
ifk>
m
fprintf('
牛顿法迭代M次没有找到方程的根'
)
return
x0=x1;
fprintf('
\n%s%、4f\t%s%d'
'
X='
X,'
k='
k)%输出结果
牛顿法结果:
迭代5次结果0、5149
割线法:
function[X]=gx9(fx,x0,x1,m,e)
f0=eval(fx);
x=x1;
f1=eval(fx);
ifabs(f0)<
X=[x0,f0];
fork=2:
ifabs(f0)<
abs(f1)
b=x0;
x0=x1;
x1=b;
b=f0;
f0=f1;
f1=b;
t=(x1-x0)/(f1-f0);
x1=x1-t*f1;
ifabs(f1)<
X=[x1,f1,k]
割线法结果:
迭代7次结果0、5149
2、编程求下面的函数在区间[0,13]上的所有零点,精度要求10-10。
提示:
先扫描得到解所在区间,再用迭代法求解。
function[X]=scan(a,b,fx)
x=a;
y0=eval(fx);
m=100000;
e=10^-10;
fork=0:
0、01:
13
x=x+k;
y1=eval(fx);
ify1==0
X=x;
disp(X);
ify0*y1>
y0=y1;
continue
x0=x-k;
x1=x;
[X]=gx9(fx,x0,x1,m,e);
%割线法
ifx>
b
%%%%%%%%%%%%%%%%
X=[x,f1,k]
扫描法结果: