文档介绍:<数值分析>报告
运用Matlab求解非线性方程的根
学 院:
专 业:
班 级:
姓 名: 学 号:
掌握非线性方程求根的方法,并选取实例运用MATLAB软件进行算法的实 现,分别用牛顿法、弦截法和抛物线法
%f是要求根的方程(f(x)=0);
%x0,x1, x2是所给初值,位丁 x*附近;
%e>给定允许误差;
%maxi迭代的最大次数;
%x3是弦截法求得的方程的近似解;
%err是误差估计;
%k>迭代次数;
%促f(x)值
fprintf( 'k=%.0f x%d=%.8f
y%d=%.8e\n' ,0,0,x0,0,feval( 'f' ,x0))
fprintf( 'k=%.0f x%d=%.8f
y%d=%.8e\n'
,1,1,x1,1,feval(
'f' ,x1))
fprintf( 'k=
%.0f x%d=%.8f
y%d=%.8e\n'
,2,2,x2,2,feval(
'f' ,x2))
for k=3:max
f0=feval( 'f'
,x0);
f1=feval( 'f'
,x1);
f2=feval( 'f'
,x2);
a=(f0-f2)/(x0-x2);
b=(f1-f2)/(x1-x2);
c=(a-b)/(x0-x1);
w=b+c*(x2-x1);
if w<0
x3=x2-(2*f2/(w-sqrt(wA2-4*c*f2)));
elseif w>0
x3=x2-(2*f2/(w+sqrt(wA2-4*c*f2)));
end
x0=x1;
x1=x2;
x2=x3;
y=feval( 'f' ,x2);
fprintf( 'k=%.0f x%d=%.8f e%d=%.6e y%d=%.8e\n' ,k,k,x2,k,err,k,y)
if (err<e)|(y==0)|(k==max)
break ;
end
end
运行结果
IATLAB 73』(B200Ba)
hie Edjt Bebn^ Parallel 虫skt叩?函外 Kelp
Short 皿代Mwb to Mi』VhH e ft*
Current .,. * D ' * Cwiand Tindow
0E tt MTUBUmh this 勺赫 s«t Dmm. w rtid Gni曲
TfmbrEyJpn
All Files Rre
Wtm ^
^ ^ * W pid mdl *]pwxme(hgd ijllME m *j t^ '如
M-file
M-fil] 、•'-- It Rgui Mpci F cur W-'filt F如LI Modr 也伽 肝仙
M-fik kfik K弥
k=0 妃(HMM
y[+O00
XI kM. BB8B8889 脚剧晌ZU
yhL 270233^002
k=2 /2=1. OMELET s2=-fl[I5
» xji^Kbd (r f . % :