搜索
您的当前位置:首页正文

基于MATLAB的科学计算—非线性方程(组)

来源:意榕旅游网


科学计算—理论、方法

及其基于MATLAB的实现与分析

解非线性方程(组)

(一)直接法

二分法:

设方程fx0在区间a,b上有唯一解,并且fafb0,如方程

fxx2.3x32xsinx0.30 (2)

首先要确定适当的包含根的区间,这可以依据闭区间上连续函数的介值定理来确定,例如,f11sin10,f22sin20.90,所以方程 (2)至少有一个实根属于区间[1,2],图1表明区间[1,2]中只含有一个根,显然方程 (2)的根不易直接求得。在区间[-1,0]、[0,1]和[1,2]的情形,如下图1所示

例1 plotNL_fun01.m

plotNL_fun01

The Image of f(x)=x3-2.3*x2+x*sin(x)+0.310.50-0.5-1-1.5-2-2.5-1-0.500.511.52  图1 clear

x=-1:0.05:2;

f=x.^3-2.3*x.^2+x.*sin(x)+0.3; plot(x,f,'r',x,0*x,'k')

title('The Image of f(x)=x^3-2.3*x^2+x*sin(x)+0.3') xlabel('\\fontsize {12} \\fontname {宋体} 图1') axis square

二分法的求根过程:用x*表示方程fx0在区间a,b上的根,对于给定的精度要求0,取区间a,b的中点x1ab2,并按下式进行判断:

fx10x1x**fx1fa0x[a,x1] (2) fxfb0x*[x,b]11以fx1fa0为例,如果

ba2,那么区间a,x1内的任何一点都可以作为

方程fx0的近根。二分法适用于一个方程的场合,收敛速度是线性的,迭代次数的估计:

ba2NNlnbalnln2 (3)

(二)迭代法

首先将方程(组)写成等价的迭代形式:

fx0xgx (7)

由此确定了相应的迭代法:

xn1gxn (8)

xa,b0 对于非线性方程(组)的迭代法来说,同样面临收敛性问题,为说明收敛性条件,先看下面的例子:

例2:

让我们来求如下方程的根

fxx2.3x32xsinx0.30

下面,我们采用迭代法求方程 (1)位于区间[1,0]中的根,为此构造迭代算法如下:

xgx0.3xsixnx2.3x (9)

n1,2, (10)

xn1gxn0.3xnsixnnxn2.3xn,

在区间[1,0]中任取一个迭代初值x0,如取初值x0EqutIteration.m:

open EqutIteration.m

0.8.执行下面的程序:

EqutIteration N = 29

ITERATION EXAMPLE FOR SOLVING EQUATION-0.3-0.4-0.5-0.6-0.7-0.80510152025300.50-0.5-1-1.5051015202530  图3 下面欲求1.5附近的根,为此分别取初值x01.4,x01.9,迭代的结果如下:open Ex_IteraConv01 Ex_IteraConv01

N = 31

说明迭代收敛性条件的例子543210-1-2-3-1.5-1-0.500.511.522.53  图4 收敛性定理:(收敛的充分性条件) 设方程fx0在[a,b]上存在唯一解,xgx是方程的等价形式,如果1、gx在[a,b]上连续可微;

2、对任何x[a,b],gx[a,b]; 3、gx则对任何x0L1,

[a,b],由迭代算法

xn1gxn,

(11)

生成的序列xn收敛于方程fx0在[a,b]上的唯一解。 注1:满足方程x*gx*的点称为映射ygx的不动点;

注2:具有性质gxL1的映射ygx称为压缩映射;

因为x*gx*,xn1gxn,

xx*gx*gx*n1ngxxnx*x**n1xgx*xxLxnx*1nLnx*,

0x一点注释:当方程(组)为线性方程(组)时,gx就是迭代格式 中的矩阵M,而gx就对应着矩阵M的范数M. 例3: Ex_IteraConv01.m

open Ex_IteraConv01

x=[-1:0.01:2];

y=(0.3+x.*sin(x))/(x.*(2.3-x)); plot(x,y,x,x) hold on m=1; z=1.4;

while m<15

y=(0.3+z*sin(z))/(z*(2.3-z));;

plot([z z],[z y],'r',[z y],[y y],'r') z=y; m=m+1; pause end

例4: Ex_IteraConv02.m

open Ex_IteraConv02

Ex_IteraConv02

xMxf

检验非线性迭代的收敛性条件举例-0.6-0.7-------------- Differential Curve of g(x)-0.8-0.9-1-1.1-1.211.11.21.31.41.51.61.71.81.92  图7 1.5039上面的例子表明了两点:在根x0附近,迭代法(10)不满足gx1的条

件,导致迭代法序列xn不收敛于此根;在根x00.4148附近,迭代法(10)尽管也不满足gx1的条件,但所生成的序列xn收敛于此根.

迭代收敛的图像解释

例5 在用迭代法求解方程f(x)2x30的正根时,构造迭代函数

2(x)xc(x3),试选取适当的c使迭代计算收敛.

解: 由于根x3,(x)12cx,故取c使112c31.

为使收敛速度快,取c使

123c0,c1412314,

因此迭代公式为x果如下:

x1214k1xk(xk3),k0,1,2.取初值x=2,迭代计算,数值结

0(23)1.75,14(1.7522x21.753)1.7343750,(1.73437502

x31.7343750143)1.73420923.显然,这里选取的迭代公式收敛,并且收敛速度较快.

收敛速度:如果有

limxn1xxnx**pnc(当p1时,要求0c1) (29)

则称迭代的收敛速度是p阶的。特别地,p1时称为线性收敛(Linear Convergence),p1时称为超线性收敛,p2时称为平方收敛(Quadratic Convergence).

注:(1) 若压缩因子0(2) 若压缩因子LL1,则迭代过程xk1(xk)为线性收敛.

0,则迭代过程xk1(xk)为超线性收敛.

(3) 一般地,收敛阶p越大,迭代过程收敛越快.

关于收敛速度的一个重要定理:

如果

1、gx在区间a,b上p2次连续可微;

2、对任何x[a,b],gx[a,b]; 3、gxL1;

[a,b]处,

4、在gx的不动点x*

p1***x0gxgxg p*gx0

则对任何x0[a,b],由迭代算法xn1gxn生成的序列xn具有p阶收敛速度。

3xk)例如,在求解方程x2(x)0,(x)6/x*330正根的时,对于迭代格式xk130,所以由定理

12(xk,因为

,(x*)2/5可知p2,该迭代过

程为2阶收敛.

常用的迭代法

1 牛顿迭代法 (Newton Iteration): 1)一个方程的场合:

xn1xnfxnfxn, (13)

牛顿迭代法构造说明:设方程右端的函数fx在所确定的包含唯一根x*的区间a,b内具有一阶连续导数fx,x0a,b,那么由一阶微分的性质,有

fxfxfxx*00*x00

 (14)

由式(14),可得

xx0*fx0fx0 (15)

从而得到迭代格式

xgxxfxfx (16)

以及牛顿迭代法(14).

牛顿迭代法的几何解释

例4: open NewtonIter01

2)方程组的场合:

对于给定的非线性方程组

f1x1,x2,,xnfx,x,,x212nFx0 (17) fx,x,,xnn12记

f1x1f2Fx1Txfnx1f1x2f2x2fnx2f1xnf2xnfnxn (18)

式(18)的右端称为向量值函数Fx的Jacobian矩阵.

设n元向量值函数FxRn在其定义域Rn内的一点x0的邻域内具有二阶连续偏导数,则对于该邻域内的任意一点x*,

FxFx*0FxxTx0*x0

(19)

举例说明:以二元函数为例,

fx,yfx0,y0fx,yfx0,yfx0,yfx0,y0fx0,yxxx0fx0,y0yyy0fx0,y02fx0,y0fx0,y0yy0xx0yy0 xxyyfx0,y0x (20)

xx0fx0,y0yyy0fx0,y0xfx0,y0xx0yyy0fx0,y0fx,yfx0,y0xfx0,y0xx0 (20) yyy0进而,对于一般的n元函数有

fxfx0fxxxx

00T (21)

将上述结论应用于n元向量值函数Fx的每一个分量,既有公式(19)所述的结论。

进一步地,当该邻域内的点x*是方程组(17)的根时,有

FxFx*0FxxTx01*x00

(22)

Fx0*0xxTxFx

0 (23)

这表明:

x0Fx0*0xxxTx1Fxx0* (24)

由此得到如下迭代算法:

xn1FxnxnTx1FxnxnFxnFxn (25)

xn1xnxn

NEWTON 迭代法的几何意义

2 弦位法

xfxnn1xnfxnxn1 nfxn1x例5: SecantIter01.m 3关于Aitken加速法

xngx 1nxn1gxn1 xxx21n1n1nxn1xn12xn1xn算法(27)能够加速的根据是

xn1x*Lxnx*x*n1xnx*x*xn1x*Lxn1x*xn1xx* n1xNewton迭代法的收敛速度是2阶的;

弦位法的收敛速度是超线性的。

MATLAB 求解方程(组)功能简介

(26)

(27)

(28)

fzero: Find zero of a function of one variable

例7: Solvefun1zero.m % FUN1ZERO.m Solvefun4zero.m % FUN4ZERO.m

fsolve: Solve a system of nonlinear equations

例8: SolveNLE01.m % NLE01.m SolveNLE02.m % NLE02.m SolveNLE03.m % NLE03.m

roots: Polynomial roots

例9: polyRoot01.m

SOLVE: Symbolic solution of algebraic equations 例10: SymSolEqu01.m

因篇幅问题不能全部显示,请点此查看更多更全内容

Top