用matlab对非线性方程求解

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

非线性方程求解

摘要:利用matlab软件编写程序,分别采用二分法、牛顿法和割线法求解非线性方程,

0 2= -x e

x

的根,要求精确到三位有效数字,其中对于二分法,根据首次迭代结果,事先估计迭代次数,比较实际迭代次数与估计值是否吻合。并将求出的迭代序列用表格表示。对于牛顿法和割线法,至少取3组不同的初值,比较各自迭代次数。将每次迭代计算值求出,并列于表中。

关键词:matlab、二分法、牛顿法、割线法。

引言:

现实数学物理问题中,很多可以看成是解方程的问题,即f(x)=0的问题,但是除了极少简单方程的根可以简单解析出来。大多数能表示成解析式的,大多数不便于计算,所以就涉及到算法的问题,算法里面,具体求根时,一般先寻求根的某一个初始近似值,然后再将初始近似值逐步加工成满足精度要求为止,但是,我们知道,人为计算大大的加重了我们的工作量,所以大多用计算机编程,这里有很多可以计算的软件,例如matlab等等。

正文:

一、二分法

1 二分法原理:对于在区间[,]上连续不断且满足·<0的函数,

通过不断地把函数的零点所在的区间一分为二,使区间的两个端点逐步逼近零点,进而得到零点近似值的方法叫做二分法。

2 二分法求根步骤:(1)确定区间,,验证·<0,给定精确度;(2)求区间,的中点;(3)计算。若=,则就是函数的零点;若·

<0,则令=;若·<0,则令=。(4)判断是否达到精确度;即若

<,则得到零点近似值(或);否则重复步骤2-4.

3 二分法具体内容:精度要求为5e-6,,解得实际迭代次数与估计值基本吻合,迭代如下表。n=2 c=0.000000 fc=-1.000000 n=11 c=-0.705078 fc=0.003065 n=3 c=-0.500000 fc=-0.356531 n=12 c=-0.704102 fc=0.001206 n=

4 c=-0.750000 fc=0.090133 n=13 c=-0.703613 fc=0.000277 n=

5 c=-0.625000 fc=-0.14463

6 n=14 c=-0.703369 fc=-0.00018

7 n=6 c=-0.687500 fc=-0.030175 n=15 c=-0.703491 fc=0.000045 n=7 c=-0.718750 fc=0.029240 n=16 c=-0.703430 fc=-0.000071 n=

8 c=-0.703125 fc=-0.000651 n=17 c=-0.703461 fc=-0.000013 n=

9 c=-0.710938 fc=0.014249 n=18 c=-0.703476 fc=0.000016

n=10 c=-0.707031 fc=0.006787 n=19 c=-0.703468 fc=0.000002

4 二分法程序:

eps=5e-6;

delta=1e-6;

a=-1;

b=1;

fa=f(a);

fb=f(b);

n=1;

while (1)

if(fa*fb>0)

break;

end

c=(a+b)/2;

fc=f(c);

if(abs(fc)

break;

else if(fa*fc<0)

b=c;

fb=fc;

else

a=c;

fa=fc;

end

if(b-a

break;

end

n=n+1;

fprintf('n=%d c=%f fc=%f\n',n,c,fc);

end

End

(在同一目录下另建文件名为“f”的文件,内容为“function output=f(x)

output=x*x-exp(x);”)

5 二分法流程图:

流程图

二:牛顿法

1 牛顿迭代法原理:设已知方程0)(=x f 的近似根0x ,则在0x 附近)(x f 可用一阶泰勒多项式))((')()(000x x x f x f x p -+=近似代替.因此, 方程0)(=x f 可近似地表示为

0)(=x p .用1x 表示0)(=x p 的根,它与0)(=x f 的根差异不大.

设0)('0≠x f ,由于1x 满足,0))((')(0100=-+x x x f x f 解得)

(')

(0001x f x f x x -

=重复这一

过程,得到迭代格式)

(')

(1k k k k x f x f x x -

=+

2 牛顿法具体内容:近似精度要求为5e-6,带入不同初值结果如下表。

初值-0.8迭代序列 初值-0.5迭代序列 初值-0.7迭代序列 -0.706959

-0.721926

-0.703472

-0.703472 -0.703601

-0.703467

3 牛顿法程序:这里以初值为0.7为例

fc=@(x)x*x-exp(x);

df=@(x)2*x-exp(x);

eps=5e-6;

delta=1e-6;

x0=-0.7;

N=100;

n=0;

while(1)

x1=x0-fc(x0)/df(x0);

n=n+1;

if(n>N|abs(x1)

disp('Newton method failed');

break;

end

if abs(x1)<1

d=x1-x0;

else

d=(x1-x0)/x1;

end

x0=x1;

if (abs(d)

end

fprintf('%f\n',x0)

End

4 牛顿法流程图:

相关文档
最新文档