文档详情

Lecture2_代数方程的解法.doc

发布:2017-03-31约字共18页下载文档
文本预览下载声明
二、解非线性方程(组) (一)直接法 1、二分法:   设方程在区间上有唯一解,并且,如方程         (2) 首先要确定适当的包含根的区间,这可以依据闭区间上连续函数的介值定理来确定,例如,,,所以方程 (2)至少有一个实根属于区间,图1表明区间中只含有一个根,显然方程 (2)的根不易直接求得。在区间[-1,0]、[0,1]和[1,2]的情形,如下图1所示 例 plotNL_fun01.m 程序实现:Find_Interval_of_Including_Root_01.m 二分法的求根过程:用表示方程在区间上近似解,对于给定的精度要求,取区间的中点,并按下式进行判断:        (2) 以为例,如果,那么区间内的任何一点都可以作为方程的近根。二分法适用于一个方程的场合,收敛速度是线性的,迭代次数的估计:       (3) 程序实现:Bisection_method_01.m 2.黄金分割法: 在区间内取对称的两点:          (4) 使得 求根(方法)程序如下:   (5) 按这种方法选取点和,每次去掉的区间长度至少是原区间长度的0.618倍, 上述适用于一个方程的场合,收敛速度是线性的,迭代次数的估计:      (6) 程序实现:Golden_Rate_method_01.m (二)迭代法 首先将方程(组)写成等价的迭代形式:        (7) 由此确定了相应的迭代法: (8)    对于非线性方程(组)的迭代法来说,同样面临收敛性问题,为说明收敛性条件,先看下面的例子: Example:EquitIteration.m   让我们来求如下方程的根 下面,我们采用迭代法求方程 (1)位于区间中的根,为此构造迭代算法如下:   ,    (9)   ,    (10) 在区间中任取一个迭代初值,如取初值。执行下面的程序: EqutIteration.m: %EqutIteration.m: Finding The Zeros of f(x)=x^3-2.3x^2+x*sin(x)+0.3 clear;clf x=[]; x(1)=-0.8; n=100; TX=1e-10; i=1; while in x(i+1)=(0.3+x(i)*sin(x(i)))/(x(i)*(2.3-x(i))); if abs(x(i+1)-x(i))TX break else i=i+1; N=i; end end N=N x=x plot([1:length(x)],x,r*) title(ITERATION EXAMPLE FOR SOLVING EQUATION) xlabel(\fontsize {12} \fontname {??ì?}??í?£±) EqutIteration N = 29 Ex_IteraConv01 N = 29 x = Columns 1 through 7 -0.8000 -0.3524 -0.4511 -0.4002 -0.4219 -0.4117 -0.4163 Columns 8 through 14 -0.4142 -0.4151 -0.4147 -0.4149 -0.4148 -0.4149 -0.4148 Columns 15 through 21 -0.4148 -0.4148 -0.4148 -0.4148 -0.4148 -0.4148 -0.4148 Columns 22 through 28 -0.4148 -0.4148 -0.4148 -0.4148 -0.4148 -0.4148 -0.4148 Columns 29 through 30 -0.4148 -0.4148 下面欲求1.5附近的根,为此分别取初值,,迭代的结果如下: Ex_IteraConv01 N = 32 x = Columns 1 through 7 1.4000 1.3330 1.2378 1.1179 0.9877 0.8676 0.7739 Columns 8 through 14 0.7120 0.6768 0.6589 0.6505 0.6467 0.6451 0.6
显示全部
相似文档