非线性方程求根

巡山小妖精
674次浏览
2021年01月03日 19:42
最佳经验
本文由作者推荐

铁皮石斛肥料-哀莫大于心死英文

2021年1月3日发(作者:郑法祥)


实验六、非线性方程求根
在科学研究与工程技术中常会遇到求解非线性方程的问题。二 分法简单易
行,但收敛较慢,仅有线性收敛速度。而且该方法不能用于求偶数重根或复根,
但可 以用来确定迭代法的初始值。牛顿法是方程求根中常用的一种迭代方法,它
除了具有简单迭代法的优点外 ,还具有二阶收敛速度(在单根邻近处)的特点,
但牛顿法对初始值选取比较苛刻(必须充分靠近方程的 根),否则牛顿法可能不
收敛。弦截法是牛顿法的一种修改,虽然比牛顿法收敛慢,但因它不需计算函数
的导数,故有时宁可用弦截法而不用牛顿法,弦截法也要求初始值必须选取得充
分靠近方程的根 ,否则也可能不收敛。
一、实验目的
1、掌握非线性方程(组)的各种解法,包括二分法、 牛顿迭代法等,并通过编
程练习与上机运算,体会二分法与牛顿迭代法的不同特点;
2、掌握解非线性方程的弦截法,并与牛顿迭代法作比较;
3、
了解各种方法的收敛性。

三、实验任务
1、用二分法求方程
f( x)x
3
x
2
3x30

1.5
附近的 根。
2、分别用牛顿迭代法和弦截法求方程
f(x)x
3
x
2
3x30

1.5
附近的根,
并由迭代次数分析结果。

三、实验过程:
1、
二分法及其MATLAB程序
function [k,x,wuca,yx]=erfen(fun,a,b,abtol)
if nargin < 4 | isempty(abtol),
abtol=1.e-5;
end
a(1)=a; b(1)=b;
ya=feval(fun,a(1)); yb=feval(fun,b(1)); %程序中调用的fun.m 为函数
if ya* yb>0,
disp('注意:ya*yb>0,请重新调整区间端点a和b.'), return
end
max1=-1+ceil((log(b-a)- log(abtol)) log(2));
% ceil是向 方向取整
for k=1: max1+1
a;ya=feval(fun,a); b;yb=feval(fun,b); x=(a+b)2;


yx=feval(fun,x); wuca=abs(b-a)2; k=k-1;
[k,a,b,x,wuca,ya,yb,yx]
if yx==0
a=x; b=x;
elseif yb*yx>0
b=x;yb=yx;
else
a=x; ya=yx;
end
if b-a< abtol , return, end
end
k=max1; x; wuca; yx=feval(fun,x);
函数
Function y=fun(x)
y=x^3+x^2-3*x-3;
输入
[k,x,wuca,yx]=erfen(‘fun’,1,2,1.e-5)
输出
k =16 x =1.7320 wuca = 7.6294e-006 yx =-2.6243e-005
2、分别用牛顿迭代法和弦截法
function[k ,xk,yk,piancha,xdpiancha]=newtonqx(f,x0,tol,ftol,g xmax)

x(1)=x0;

for i=1: gxmax

x(i+1)=x(i)-subs(f,x(i))(subs(diff(f),x(i))+eps); piancha=abs(x(i+1)-x(i));

xdpiancha= piancha( abs(x(i+1))+eps); i=i+1;

xk=x(i);yk=subs(f,x(i)); [(i-1) xk yk piancha xdpiancha]

if (abs(yk)
k=i-1; xk=x(i);[(i-1) xk yk piancha xdpiancha]

return

end

end

if i>gxmax

k=i-1; xk=x(i);[(i-1) xk yk piancha xdpiancha]

return;

end

[(i-1),xk,yk,piancha,xdpiancha]';


输入
[k,xk,yk,piancha,xdpiancha]=newtonqx(‘f un’,1.5,1.e-4,1.e-4,100)

输出
k = 4 xk = 1.7321 yk =7.7973e-012 piancha = 1.1218e-006

xdpiancha = 6.4769e-007



弦截法
function [k,piancha,xdpiancha,xk,yk]=gexian (x01,x02,tol,ftol,gxmax)

x(1)=x01;x(2)=x02;

for i=2: gxmax

u(i)= x(i)^3+x(i)^2-3*x(i)-3; v(i)=(x(i)^3 +x(i)^2-3*x(i)-x(i-1)^3-x(i-1)^2+3*x(i-1))(x(i)-x( i-1));

x(i+1)=x(i)- u(i)( v(i)); piancha=abs(x(i+1)-x(i));

xdpiancha= piancha( abs(x(i+1))+eps); i=i+1; xk= x(i);

yk=x(i)^3+x(i)^2-3*x(i)-3; [(i-2) piancha xdpiancha xk yk]

if (abs(yk)
k=i-2; xk=x(i);yk=x(i)^3+x(i)^2-3*x(i)-3;

[(i-2) piancha xdpiancha xk yk];

return;

end

end

if i>gxmax



k=i-2; xk=x(i);yk=fnq(x(i));

return;

end


[k,piancha,xdpiancha,xk,yk]=gexian (1,2,0.001,0.001,100)
k = 5 piancha =5.4327e-005 xdpiancha =3.1366e-005


yk =-1.0390e-006
xk =1.7321

五合六聚-梁静茹的歌


李经梧-匆匆课件


房山区政府-军训作文600字


江苏省成人高考报名-作女


怎么下载qq-2015双十一


有意思的名字-因为爱情有奇迹插曲


十大坑人专业-教师祝福


身边-集团公司章程