非线性方程组求根的牛顿迭代法
- 格式:doc
- 大小:184.50 KB
- 文档页数:5
1. 非线性方程组求解1.分别用牛顿法,及基于牛顿算法下的Steffensen 加速法。
(1) 求ln(sin )x x +的根。
初值0x 分别取0.1,1,1.5,2,4进行计算。
(2) 求sin =0x 的根。
初值0x 分别取1,1.4,1.6,1.8,3进行计算。
分析其中遇到的现象与问题。
(1)牛顿法牛顿法实质上是一种线性化方法,其基本思想是将非线性方程()0f x =逐步归结为某种线性方程来求解。
将已知方程()0f x =在近似值k x 附近展开,有()()()()'0k k k f x f x f x f x x ≈+-=,构造迭代公式,则1k x +的计算公式为:()()1',0,1,,k k k k f x x x k f x +=-= (1-1)根据Taylor 级数的几何意义我们可以从几何上形象的看牛顿迭代法的求解()0f x =的过程,第一次迭代()()'1000/x x f x f x =-,其中()()'00/f x f x 的几何意义很明显,就是0x 到1x 的线段长度(这可以从直角三角形的知识得到)。
第二次迭代()()'2111/x x f x f x =-,其中()()'11/f x f x 的几何意义很明显,就是1x 到2x 的线段长度。
同理可以进行第三次迭代第四次迭代,可以明显的看出x 的取值在不断逼近真实解*x 。
如图1-1所示:图1-1○1求ln(sin )=0x x +的根时,迭代公式为()1ln(sin )sin 1cos k k x x x x x x x+++=++,0示。
计算结果见附录1表F.1-1所示。
初值取1.5,2,4进行计算时结果不收敛。
表 1-1 牛顿法计算结果○2求sin =0x 的根时,迭代公式为1cos k k x x x+=+,初值0x 分别取1、1.4、1.6、1.8、3计算时结果收敛,误差小于510-时,近似解如表1-2所示。
非线性方程求根——牛顿迭代法一、牛顿迭代法的基本思想基本思想:将非线性方程逐步归结为某种线性方程求解。
设方程f (x )=0有近似根x k (f `(x k )≠0),将f (x )在x k 展开:(ξ在x 和x k 之间)2()()()()()()2!k k k k f f x f x f x x x x x ξ'''=+-+-()()()()k k k f x f x f x x x '≈+-可设记该线性方程的根为x k +1,则()()()0k k k f x f x x x '+-=1()()k k k k f x x x f x +=-'故f (x )=0可近似表示为即为Newton 法迭代格式。
(k =0,1,……)例:用Newton 迭代法求方程310x x --=在x 0=1.5附近的近似实根。
解:32()1,()31f x x x f x x '=--=-迭代公式为312131kk k k k x x x x x +--=--计算步骤如下:(1)取初值x 0=1.5;(2)按照迭代公式计算x 1;(3)若|x 1-x 0|<=0.00001,终止迭代;否则,x 0=x 1;转(2);(4)输出迭代次数和近似根.二、牛顿迭代法的实现MATLAB求解程序设计:方程及一阶导数函数:function[fun,dfun]=fun0(x)fun=x^3-x-1;%求原函数的值dfun=3*x^2-1;%求一阶导数的值计算主程序:clearx0=1.5;[fun,dfun]=fun0(x0);x1=x0-fun/dfun;i=1;while abs(x1-x0)>1e-5x0=x1;[fun,dfun]=fun0(x0);x1=x0-fun/dfun;i=i+1;enddisp('the solution is x1=')x1disp('the iter time is ')i计算结果为:the solution is x1=x1 =1.3247the iter time isi =4可见经过4次迭代即到达要求的精度,原方程的一个近似实数根为1.3247.三、牛顿迭代法的收敛性牛顿迭代法的迭代函数:)()()(x f x f x x '-=ϕ222)]([)()()]([)()()]([1)(x f x f x f x f x f x f x f x '''='''-'-='ϕ设f (x *)=0,f `(x *)≠0,则ϕ`(x *)=0,故Newton 迭代法在x *附近至少平方收敛。
解非线性方程的牛顿迭代法及其应用一、本文概述非线性方程是数学领域中的一个重要研究对象,其在实际应用中广泛存在,如物理学、工程学、经济学等领域。
求解非线性方程是一个具有挑战性的问题,因为这类方程往往没有简单的解析解,需要通过数值方法进行求解。
牛顿迭代法作为一种古老而有效的数值求解方法,对于求解非线性方程具有重要的应用价值。
本文旨在介绍牛顿迭代法的基本原理、实现步骤以及在实际问题中的应用。
我们将详细阐述牛顿迭代法的基本思想,包括其历史背景、数学原理以及收敛性分析。
我们将通过具体实例,展示牛顿迭代法的计算步骤和实际操作过程,以便读者能够更好地理解和掌握该方法。
我们将探讨牛顿迭代法在各个领域中的实际应用,包括其在物理学、工程学、经济学等领域中的典型应用案例,以及在实际应用中可能遇到的问题和解决方法。
通过本文的介绍,读者可以深入了解牛顿迭代法的基本原理和应用技巧,掌握其在求解非线性方程中的实际应用方法,为进一步的研究和应用提供有力支持。
二、牛顿迭代法的基本原理牛顿迭代法,又称为牛顿-拉夫森方法,是一种在实数或复数域上近似求解方程的方法。
其基本原理是利用泰勒级数的前几项来寻找方程的根。
如果函数f(x)在x0点的导数f'(x0)不为零,那么函数f(x)在x0点附近可以用一阶泰勒级数来近似表示,即:这就是牛顿迭代法的基本迭代公式。
给定一个初始值x0,我们可以通过不断迭代这个公式来逼近f(x)的根。
每次迭代,我们都用当前的近似值x0来更新x0,即:这个过程一直持续到满足某个停止条件,例如迭代次数达到预设的上限,或者连续两次迭代的结果之间的差小于某个预设的阈值。
牛顿迭代法的收敛速度通常比线性搜索方法快,因为它利用了函数的导数信息。
然而,这种方法也有其局限性。
它要求函数在其迭代点处可导,且导数不为零。
牛顿迭代法可能不收敛,如果初始点选择不当,或者函数有多个根,或者根是重根。
因此,在使用牛顿迭代法时,需要谨慎选择初始点,并对迭代过程进行适当的监控和调整。
牛顿法牛顿法作为求解非线性方程的一种经典的迭代方法,它的收敛速度快,有内在函数可以直接使用。
结合着matlab 可以对其进行应用,求解方程。
牛顿迭代法(Newton ’s method )又称为牛顿-拉夫逊方法(Newton-Raphson method ),它是牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法,其基本思想是利用目标函数的二次Taylor 展开,并将其极小化。
牛顿法使用函数()f x 的泰勒级数的前面几项来寻找方程()0f x =的根。
牛顿法是求方程根的重要方法之一,其最大优点是在方程()0f x =的单根附近具有平方收敛,而且该法还可以用来求方程的重根、复根,此时非线性收敛,但是可通过一些方法变成线性收敛。
牛顿法的几何解释:方程()0f x =的根*x 可解释为曲线()y f x =与x 轴的焦点的横坐标。
如下图:设k x 是根*x 的某个近似值,过曲线()y f x =上横坐标为k x 的点k P 引切线,并将该切线与x 轴的交点 的横坐标1k x +作为*x 的新的近似值。
鉴于这种几何背景,牛顿法亦称为切线法。
2 牛顿迭代公式:(1)最速下降法:以负梯度方向作为极小化算法的下降方向,也称为梯度法。
设函数()f x 在k x 附近连续可微,且()0k k g f x =∇≠。
由泰勒展开式: ()()()()()Tk k k k fx f x x x f x x x ο=+-∇+- (*)可知,若记为k k x x d α-=,则满足0Tk k d g <的方向k d 是下降方向。
当α取定后,Tk k d g 的值越小,即T kk d g -的值越大,函数下降的越快。
由Cauchy-Schwartz 不等式:T k k kk d g d g ≤,故当且仅当k k d g =-时,Tk k d g 最小,从而称k g -是最速下降方向。
最速下降法的迭代格式为: 1k k k k x x g α+=-。
非线性方程组的求解方法及其应用非线性方程组是数学中一类非常重要的问题,其中每个方程都不是线性的。
与线性方程组不同,非线性方程组的求解通常需要借助于数值方法。
本文将讨论一些常见的非线性方程组求解方法,并介绍它们在实际应用中的一些应用。
1. 牛顿法牛顿法是一种非常常见的非线性方程组求解方法。
该方法基于牛顿迭代法原理,将非线性方程组转化为一系列的线性问题。
牛顿法的基本思想是:通过不断地使用一阶导数和二阶导数的信息来逼近方程组的解。
具体地说,在每一轮迭代中,求解一个方程组:$$F(x^{k})+J(x^{k})\Delta x^{k} =0$$其中$F(x)$表示非线性方程组,$x^k$表示第$k$轮迭代的解,$J(x^k)$表示$F(x)$在$x^k$处的雅可比矩阵,$\Delta x^k$表示下降方向,满足$\|\Delta x^k\|\rightarrow 0$。
值得注意的是,牛顿法在每轮迭代中都需要求解一次雅可比矩阵,这需要大量的计算资源。
因此,在实际应用中,牛顿法通常只适用于相对较小的方程组。
2. 信赖域方法相比于牛顿法,信赖域方法更具有通用性。
信赖域方法的基本思想是:在每轮迭代中,通过构造二次模型来逼近目标函数,并在一个信赖域内搜索下降方向。
具体地说,我们在每轮迭代中将非线性方程组$F(x)$在$x^k$处转化为二次模型:$$m_k(\Delta x)=F(x^k)+\nabla F(x^k)^\top \Deltax+\frac{1}{2}\Delta x^\top B_k\Delta x$$其中,$\nabla F(x^k)$是$F(x)$在$x^k$处的梯度,$B_k$是二阶导数信息。
在这里我们假设$B_k$为正定矩阵。
显然,我们希望在$m_k(\Delta x)$的取值范围内找到一个适当的$\Delta x$,使得$m_k(\Delta x)$最小。
因此,我们需要设定一个信赖域半径$\Delta_k$,并在$B_k$所定义的椭圆范围内查找最优的$\Delta x$。
迭代法(iterative method
迭代法是一种数学方法,通过不断地迭代逼近来求解数学问题。
这种方法通常用于求解方程、优化问题、积分问题等。
迭代法的基本思想是:给定一个初始值或初始解,然后根据一定的规则进行迭代,每次迭代都得到一个新的解,直到满足某个终止条件为止。
这个终止条件可以是精度要求、迭代次数限制等。
常见的迭代法包括:
1.牛顿迭代法:用于求解非线性方程的根,通过不断地逼近方程的根来求解。
2.梯度下降法:用于求解最优化问题,通过不断地沿着负梯度的方向搜索来找到最优
解。
3.牛顿-拉夫森方法:结合了牛顿法和二分法的优点,用于求解非线性方程的根。
4.雅可比迭代法:用于求解线性方程组,通过不断地逼近方程组的解来求解。
5.高斯-赛德尔迭代法:用于求解线性方程组,通过不断地逼近方程组的解来求解。
使用迭代法时需要注意初始值的选择、迭代规则的合理性、终止条件的设定等问题,以确保迭代过程的收敛性和有效性。
同时,迭代法也有一定的局限性,对于一些非线性问题或复杂问题,可能需要进行多次迭代或者采用其他方法进行求解。
非线性方程组求解的牛顿迭代法用MATLAB实现首先,我们需要定义非线性方程组。
假设我们要求解方程组:```f1(x1,x2)=0f2(x1,x2)=0```其中,`x1`和`x2`是未知数,`f1`和`f2`是非线性函数。
我们可以将这个方程组表示为向量的形式:```F(x)=[f1(x1,x2);f2(x1,x2)]=[0;0]```其中,`F(x)`是一个列向量。
为了实现牛顿迭代法,我们需要计算方程组的雅可比矩阵。
雅可比矩阵是由方程组的偏导数组成的矩阵。
对于方程组中的每个函数,我们可以计算其对每个变量的偏导数,然后将这些偏导数组成一个矩阵。
在MATLAB中,我们可以使用`jacobi`函数来计算雅可比矩阵。
以下是一个示例函数的定义:```matlabfunction J = jacobi(x)x1=x(1);x2=x(2);J = [df1_dx1, df1_dx2; df2_dx1, df2_dx2];end```其中,`x`是一个包含未知数的向量,`df1_dx1`和`df1_dx2`是`f1`对`x1`和`x2`的偏导数,`df2_dx1`和`df2_dx2`是`f2`对`x1`和`x2`的偏导数。
下一步是实现牛顿迭代法。
牛顿迭代法的迭代公式为:```x(k+1)=x(k)-J(x(k))\F(x(k))```其中,`x(k)`是第`k`次迭代的近似解,`\`表示矩阵的求逆操作。
在MATLAB中,我们可以使用如下代码来实现牛顿迭代法:```matlabfunction x = newton_method(x_initial)max_iter = 100; % 最大迭代次数tol = 1e-6; % 收敛阈值x = x_initial; % 初始解for k = 1:max_iterF=[f1(x(1),x(2));f2(x(1),x(2))];%计算F(x)J = jacobi(x); % 计算雅可比矩阵 J(x)delta_x = J \ -F; % 计算增量 delta_xx = x + delta_x; % 更新 xif norm(delta_x) < tolbreak; % 达到收敛条件,停止迭代endendend```其中,`x_initial`是初始解的向量,`max_iter`是最大迭代次数,`tol`是收敛阈值。
牛顿法牛顿法作为求解非线性方程的一种经典的迭代方法,它的收敛速度快,有内在函数可以直接使用。
结合着matlab 可以对其进行应用,求解方程。
牛顿迭代法(Newton Newton’’s s method method )又称为牛顿-拉夫逊方法(Newton-Raphson method ),它是牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法,其基本思想是利用目标函数的二次Taylor 展开,并将其极小化。
牛顿法使用函数()f x 的泰勒级数的前面几项来寻找方程()0f x =的根。
牛顿法是求方程根的重要方法之一,其最大优点是在方程()0f x =的单根附近具有平方收敛,而且该法还可以用来求方程的重根、复根,此时非线性收敛,但是可通过一些方法变成线性收敛。
收敛。
牛顿法的几何解释:牛顿法的几何解释:方程()0f x =的根*x 可解释为曲线()y f x =与x 轴的焦点的横坐标。
如下图:轴的焦点的横坐标。
如下图:设k x 是根*x 的某个近似值,过曲线()y f x =上横坐标为k x 的点k P 引切线,并将该切线与x 轴的交点轴的交点 的横坐标1k x +作为*x 的新的近似值。
鉴于这种几何背景,牛顿法亦称为切线法。
牛顿法亦称为切线法。
2 牛顿迭代公式:(1)最速下降法:x-d gk k×Gg sks×GGd 101x x x -(1)令k k G v I k G -=+,其中:,其中:0k v =,如果k G 正定;0,k v >否则。
否则。
(2)计算_k G 的Cholesky 分解,_T k k k k G L D L =。
(3)解_k k G d g =-得k d 。
(4)令1k k k x x d +=+牛顿法的优点是收敛快,缺点一是每步迭代要计算()()'k k f x f x 及,计算量较大且有时()'k fx 计算较困难,二是初始近似值0x 只在根*x附近才能保证收敛,如0x 给的不合适可能不收敛。
二元非线性方程组求根的牛顿迭代法摘要:本文根据一元函数的Taybr 公式和求解一元非线性方程的牛顿迭代法之间的关系,利用多元函数的Taybr 公式推导出了二元非线性方程组的牛顿迭代法;在此基础上,通过MA TLAB 仿真计算一个方程组的根来说明该方法是可行的。
关键词:牛顿迭代法;一元函数;二元函数; Taybr 公式; Matlab 0 引言非线性方程()0f x =的数值解法有逐步搜索法、区间二分法、迭代法、牛顿迭代法等, 那么, 对于对于非线性方程组(,)0(,)0f x y g x y =⎧⎨=⎩,其牛顿迭代法的迭代方程是什么? 本文根据一元函数的Taybr 公式和一元非线性方程牛顿迭代法之间的关系,利用多元函数的Taybr 公式推导出了二元非线性方程组的牛顿迭代法,在此基础上利用推导出的二元非线性方程组求根的牛顿迭代法通过matlab 仿真计算出一个方程组的根,检验了所得方法的有效性。
1 基本定理、结论定理1 (一元函数的Taybr 公式)如果函数()f x 在含有0x 的某个开区间(,)a b 内具有直(1)n +阶的导数,则对任一(,)x a b ∈ ,有()20000000()()()()()()()...()()2!!n n n f x f x f x f x f x x x x x x x R x n '''=+-+-++-+其中()n R x = ()(1)10()()1!n n f x x n ξ++-+,这里ξ是0x 与x 之间的某个值。
定理2 (二元函数的Taybr 公式)设(,)z f x y =在点00(,)x y 的某一邻域内连续且有直到(1)n +阶的连续偏导数,00(,)x k y k ++为此邻域内任一点,则有2000000001(,)(,)(,)(,)...2!f x k y k f x y h k f x y h k f x y x y x y αααααααα⎛⎫⎛⎫++=++++++ ⎪ ⎪⎝⎭⎝⎭1000011(,)(,)!(1)!n n h k f x y h k f x k y k n x y n x y ααααθθαααα+⎛⎫⎛⎫++++++ ⎪ ⎪+⎝⎭⎝⎭,(01)θ<<. 其中00(,)mh k f x y x y αααα⎛⎫+ ⎪⎝⎭表示00(,)0m mp p m pm x y p m p p f C h k x y --=∂∂∂∑定理3:一元非线性方程求根的牛顿牛顿法设已知方程f ( x) = 0有近似根k x (假定f ′(k x ) ≠0,将函数f ( x)在点kx 处展开,有f ( x)≈ f (k x ) + f ′(k x ) ( x -k x ) ,于是方程f ( x) = 0可近似的表示为f (k x ) + f ′(k x ) ( x -k x ) = 0这是个线性方程,记其根为k x + 1 ,则k x + 1的计算 公式为1()()k k k k f x x x f x +=-'( k = 0, 1, …) 2 二元函数的牛顿迭代法设z = f ( x, y)在点00(,)x y 的某一邻域内连续且有直到2阶的连续偏导数,00(,)x h y k ++为此邻域内任一点,则有000000(,)(,)(,)(,)x x y y f x h y k f x y h f x y kf x y xy==⎛⎫∂∂++≈++ ⎪∂∂⎝⎭于是方程f ( x, y) = 0可近似的表示为(,)(,)(,)0k kk k x x y y f x y h f x y kf x y x y==⎛⎫∂∂++= ⎪∂∂⎝⎭即(,)()(,)()(,)0k k k k k k k k k k f x y x x f x y y y f x y +-+-=同理设z = g ( x, y )在点00(,)x y 的某一邻域内连续且有直到2阶的连续偏导数, 00(,)x h y k ++为此邻域内任一点,则同样有000000(,)(,)(,)(,)x x y y g x h y k g x y h g x y kg x y xy==⎛⎫∂∂++≈++ ⎪∂∂⎝⎭其中00,h x x k y y =-=-于是方程g ( x, y) = 0可近似的表示为,()(,)(,)0k kk k x x y y g x y h g x y kg x y xx==⎛∂∂⎫++= ⎪∂∂⎝⎭即()(,)(),()(,)0k k k x k k k y k k g x y x x g x y y y g x y +-+-=于是得到方程组,,,,,,()()()()()0()()()()()0k k k y k k k y k k k kk y k k k y k k f x y x x f x y y y f x y g x y x x g x y y y g x y +-+-=⎧⎪⎨+-+-=⎪⎩ 求解这个方程组:当,,,,()()()()0x k k y k k x k k x k k g x y f x y f x y g x y +-≠时 x =,,,,,,,,()()()()+()()()()k k y k k k k y k k k x k k y k k x k k y k k f x y g x y g x y f x y x g x y f x y f x y g x y +-+-y =,,,,,,,,()()()()+()()()()k k x k k k k x k k k x k k y k k x k k y k k g x y f x y f x y g x y y g x y f x y f x y g x y +-+-从而:,,,,,,,,,,,,,,,,()()()()+()()()()()()()()+()()()()k k y k k k k y k k k x k k y k k x k k y k k k k x k k k k x k k kx k k y k k x k k y k k f x y g x y g x y f x y x x g x y f x y f x y g x y g x y f x y f x y g x y y y g x y f x y f x y g x y +-⎧=⎪+-⎪⎨+-⎪=⎪+-⎩记符号,(),,,,()()()()k k x x x y k k x k k k k x k k gf fg g x y f x y f x y g x y -=- ,(),,,,()()()()k k y y x y k k y k k k k y k k fg gf f x y g x y g x y f x y -=- ,(),,,,()()()()k k x y x yx y x k k y k k x k k y k k g f f g g x y f x y f x y g x y -=-又可改写为,,,,()()()()k k k k k k k k y y x y k x y x y x y x x x y k x y x y x y fg gf x x g f f g fg gf y y g f f g ⎧-⎪=+⎪-⎪⎨-⎪=+⎪-⎪⎩迭代公式为:,,,,()1()()1()k k k k k k k k y y x y k k x y x y x y x x x y k k x y x y x y fg gf x x g f f g fg gf y y g f f g ++⎧-⎪=+⎪-⎪⎨-⎪=+⎪-⎪⎩通过迭代公式可迭代出当k = 1, 2, …时,,()k k x y 的值,当1,1()(0k k x y δδ++≤>为给定的误差控制项)时, 原方程组的根即为,()k k x y 。
这就是二元函数牛顿(Newton)法。
3 方法应用例 给定方程组40sin()0x y y xy e e xe xy ⎧-+-=⎪⎨-=⎪⎩初始条件取为x = 1, y = 1, 用二元函数牛顿迭代法求此方程组的根。
解:令4sin()x yyf xy e eg xe xy ⎧=-+-⎪⎨=-⎪⎩,计算其偏导数如下 ,cos()x y x x f y e g e y xy =-=-,cos()y y y x f x e g xe x xy =+=- 其代入迭代公式,,,,()1()()1()k k k k k k k k y y x y k k x y x y x y x x x y k k x y x y x y fg gf x x g f f g fg gf y y g f f g ++⎧-⎪=+⎪-⎪⎨-⎪=+⎪-⎪⎩可得:(),()(4)cos()sin()k k x y y y yx xx y fg gf xy e e xe x xy xe xy x e ⎡⎤⎡⎤-=-+----+⎣⎦⎣⎦(),()(sin())()cos()k k y y x yx y x y x y g f f g e x xy x e y e xe x xy ⎡⎤-=-+---⎣⎦,()()sin()cos()(4)k k x y y x yx xx y gf fg y e xe xy e y xy xy e e ⎡⎤⎡⎤-=-----+-⎣⎦⎣⎦运用matlab 程序解得此方程组的根为: x = 1. 1572e - 005 y = 1. 6094 f = 8. 1770e - 006 g = 3. 9235e - 005 i = 5分析:初始条件取为x = 1, y = 1,可以换其他数值检验。
说明误差在允许范围内! 其迭代次数为5,迭代速度比较快。
参考文献:[ 1 ] 马东升, 雷永军. 数值计算方法[M ]. 北京: 机械工业出版 社, 2001.[ 2 ] 陈传璋,金福临,朱学炎,等. 数学分析(上册) [M ]. 北京:高等 教育出版社, 1983.[ 3 ] 陈传璋,金福临,朱学炎,等. 数学分析(下册) [M ]. 北京:高等 教育出版社, 1983.[ 4 ] 李海涛,邓樱. MATLAB 程序设计教程[M ]. 北京:高等教育出 版社, 2004.[ 5 ] 刘为国. MATLAB 程序设计教程[M ]. 北京: 水利水电出版 社, 2005.。