Newton迭代法实例
第三章 迭代法s3 Newton迭代法
第三章 迭 代 法
第三节 Newton迭代法 Newton迭代法
Newton迭代法发散的例子 迭代法发散的例子
举例( 举例(一)
例: 设计一个二阶收敛算法计算 a (a > 0)。 。 解:转化为求 x2-a = 0 的正根
2 f ( xk ) xk − a 1 a = xk − = xk + Newton 迭代: xk +1 = xk − 迭代: f ′( xk ) 2 a xk + a − 2 xk a xk +1 − a = − a = = 2 xk 2 xk 2 xk 2 k
(
)
2
(x
xk +1 − a
k
− a
)
2
=
1 2 xk
1 2 a
二阶收敛
练习:设计一个局部收敛的迭代算法只用加、 练习:设计一个局部收敛的迭代算法只用加、减、乘法 计算倒数1/ 计算倒数1/a。
Newton迭代 迭代
基本思想: 将非线性方程线性化 基本思想: 将非线性方程
的近似根, 展开: 设 xk 是 f (x)=0 的近似根, 将 f (x) 在 xk Taylor 展开 f ′′(ξ ) ′( xk )( x − xk ) + f ( x) = f ( xk ) + f ( x − xk )2 , ξ 在 xk 和 x 之间 之间. 2! f ( xk ) ≈ f ( xk ) + f ′( xk )( x * − xk ) x* ≈ xk − 0 = f ( x*) f ′( xk ) y f ( xk ) xk +1 = xk − f ′( xk )
非线性方程求根—牛顿迭代法(新)
非线性方程求根——牛顿迭代法一、牛顿迭代法的基本思想基本思想:将非线性方程逐步归结为某种线性方程求解。
设方程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 *附近至少平方收敛。
Newton迭代法求解非线性方程
Newton迭代法求解非线性方程一、 Newton迭代法概述构造迭代函数的一条重要途径是用近似方程来代替原方程去求根。
因此,如()=x果能将非线性方程f0用线性方程去代替,那么,求近似根问题就很容易解决,而且十分方便。
牛顿(Newton)法就是一种将非线性方程线化的一种方法。
()xx处作一阶Taylor在0的一个近似根,是方程f把如果x展开,=设)xf(kk 即:f(x)?f(x)?f'(x)(x?x) (1-1)kkk于是我们得到如下近似方程:f(x)?f'(x)(x?x)?0 (1-2) kkk设,则方程的解为:0x'()?f k)xf(+k x=x?k?)xf(k(1-3)~x x作为原方程的新近似根取,即令:1k?)xf(k??xx…k=0,1,2, , k?1k)f'(x k(1-4)上式称为牛顿迭代格式。
用牛顿迭代格式求方程的根的方法就称为牛顿迭代法,简称牛顿法。
牛顿法具有明显的几何意义。
方程:)xx)(()xfy?(?f'x?kkk(1-5))),(xxf((1-5)上点迭代格式处的切线方程。
(1-4)是曲线就是用切线式)f(x?y kk的零点来代替曲线的零点。
正因为如此,牛顿法也称为切线法。
牛顿迭代法对单根至少是二阶局部收敛的,而对于重根是一阶局部收敛的。
*x时才能保证收敛。
若的要求较高,初值足够靠近一般来说,牛顿法对初值x0.要保证初值在较大范围内收敛,则需对加一些条件。
如果所加的条件不满足,)(xf 而导致牛顿法不收敛时,则需对牛顿法作一些改时,即可以采用下面的迭代格式:f(x)k?x??x?,,2?0,1k k1k?f'(x),k(1-6)0???1,称为下山因子。
因此,用这种方法求方程的根,也称为牛顿上式中,下山法。
f(x)之外,还要计算牛顿法对单根收敛速度快,但每迭代一次,除需计算k f'(x)f'(x)的工作量就可能比较大。
研究生数值分析(5)牛顿(Newton)迭代法
z
0.612547 0.641384 0.641186
6 求方程 m重根的Newton法 设 s 是方程 f(x)=0 的 m 重根(m≥2), f(x)
在 s 的某邻域内有m阶连续导数 ,这时
f (s) f (s) f (m1) (s) 0, f (m) (s) 0
由Taylor公式,得
设 f '(x) 0 ,上式解为
x
xk
f (xk ) f ' (xk )
于是方程 f(x)=0的新的近似根xk+1,可由牛顿
迭代公式
xk 1
xk
f (xk ) f ' (xk )
k 0,1, 2,
求出
牛顿迭代公式具有明显的几何意义。 方程 y f (xk ) f '(xk )(x xk ) 是曲线 y=f(x)在点 (xk , f (xk )) 处的切线方程,迭代公式就是切线与x轴 交点的横坐标。因此,牛顿迭代法又称为切线法。
这表明牛顿迭代法用于求单根时至少是二阶收敛的。
(2)若 x* 是方程 f (x) 0 的 m(m 2) 重根,
即
f (x) (x x*)m q(x)
(q(x*) 0)
此时有
g ' (x*) lim g ' (x) lim
x x*
x x*
f (x) f '' (x) [ f ' (x)]2
k
xk
k
xk
4 0.635498 8 0.640964
5 0.643719 9 0.641285
6 0.640061 10 0.641142
牛顿迭代法(Newton‘s Method)
牛顿迭代法(Newton’s Method)又称为牛顿-拉夫逊(拉弗森)方法(Newton-Raphson Method),它是牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法。
与一阶方法相比,二阶方法使用二阶导数改进了优化,其中最广泛使用的二阶方法是牛顿法。
考虑无约束最优化问题:其中 \theta^{\ast} 为目标函数的极小点,假设 f\left( \theta \right) 具有二阶连续偏导数,若第 k 次迭代值为 \theta^{k} ,则可将f\left( \theta \right)在\theta^{k}近进行二阶泰勒展开:这里,g_{k}=x^{\left( \theta^{k} \right)}=∇f\left( \theta^{k} \right)是f\left( \theta \right) 的梯度向量在点 \theta^{k}的值, H\left( \theta^{k} \right) 是 f\left( \theta \right) 的Hessian矩阵:在点 \theta^{\left( k \right)}的值。
函数 f\left( \theta \right) 有极值的必要条件是在极值点处一阶导数为0,即梯度向量为0,特别是当H\left( \theta\right) 是正定矩阵时,函数 f\left( \theta \right) 的极值为极小值。
牛顿法利用极小点的必要条件:这就是牛顿迭代法。
迭代过程可参考下图:在深度学习中,目标函数的表面通常非凸(有很多特征),如鞍点。
因此使用牛顿法是有问题的。
如果Hessian矩阵的特征值并不都是正的,例如,靠近鞍点处,牛顿法实际上会导致更新朝错误的方向移动。
这种情况可以通过正则化Hessian矩阵来避免。
常用的正则化策略包括在Hessian矩阵对角线上增加常数α 。
正则化更新变为:这个正则化策略用于牛顿法的近似,例如Levenberg-Marquardt算,只要Hessian矩阵的负特征值仍然相对接近零,效果就会很好。
Newton迭代法实例
基于牛顿迭代法的圆形断面临界水深直接计算学院:建筑工程学院学号:2111206052 姓名:王瑞峰一、问题来源圆形断面由于具有受力条件好、适应地形能力强、水力条件好等优点,已成为农田灌溉、城市给水排水等工程较常采用的断面形式。
而临界水深的计算则是进行圆形断面水力计算的关键,但其计算较繁杂,要求解高次隐函数方程,且未知量包含在三角函数中,求解难度大。
自20世纪90年代,对圆形断面临界水深的计算进行了大量研究,获得了较多成果。
鉴此,本文应用牛顿迭代算法,得到一种较简洁且可提供高精度算法程序的近似计算公式。
二、数学模型相应于断面单位能量最小值的水深称为临界水深,其计算公式为:需满足的临界流方程为:其中式中,d为洞径;为临界水深对应的圆心角,rad;n为流速分布不均匀系数(不特殊说明时取1.0);Q为流量,m3Is;g为重力加速度(通常取9.81 m/s2);分别为临界流对应的过水断面面积和水面宽度。
无压流圆形断面的水力要素见图1将式(1)、(3)、(4)代入式(2)得:将式(5)整理即得临界水深的非线形方程:由此可知.式(6)为临界水深h。
的高次隐函数方程,且未知量包含在三角函数中。
即圆形断面临界水深的求解即为式(6)的求根问题。
在现行工程实际中计算临界水深时均采用近似公式或试算法,所得结果精度不高且效率较低。
三、方法选择牛顿迭代法是求方程根的重要方法之一,其最大优点是在方程f(x) = 0的单根附近具有平方收敛,而且该法还可以用来求方程的重根、复根。
解非线性方程f(x)=0的牛顿法是把非线性方程线性化的一种近似方法。
把f(x)在x0点附近展开成泰勒级数f(x) = f(x0)+(x-x0)f'(x0)+(x-x0)^2*f''(x0)/2! +… 取其线性部分,作为非线性方程f(x) = 0的近似方程,即泰勒展开的前两项,则有f(x0)+f'(x0)(x-x0)=f(x)=0 设f'(x0)≠0则其解为x1=x0-f(x0)/f'(x0) 这样,得到牛顿法的一个迭代序列:x(n+1)=x(n)-f(x(n))/f'(x(n))。
实验15 Newton迭代法
《数值分析》实验15一.实验名称:Newton 迭代法二、实验目的:(1) 掌握求解非线性方程的Newton 迭代法;(2) 了解Newton 迭代法的一些变体算法。
三、实验要求(1) 按照题目要求完成实验内容(2) 写出相应的语言程序(3) 给出实验原理、实验结果(4) 写出相应的实验报告。
四、实验题目1、用Newton 迭代法,割线法求方程3()310f x x x =--=在02x =附近的根,要求误差不超过410ε-=。
(给出每次迭代的结果,结果保留4位小数) 程序:#include<stdio.h>#include<math.h>#include<stdlib.h>double f(double x){return pow(x,3)-x-1;}void main(){int i,j,k,nn=1000,n,m;double t,err=1e-4,dx=1;double x[nn],y[nn];x[0]=1,x[1]=2;printf("x 估值 前后误差 迭代次数\n");for(k=1;k<nn&&dx>err;k++){x[k+1]=x[k]-f(x[k])*(x[k]-x[k-1])/(f(x[k])-f(x[k-1])); dx=fabs(x[k+1]-x[k]);printf("%0.4f %0.4f %d\n",x[k],dx,k);}}结果:x 估值 前后误差 迭代次数2.0000 0.4545 01.5455 0.1858 11.3596 0.0338 21.3258 0.0011 31.3247 0.0000 4程序:#include<stdio.h>#include<math.h>#include<stdlib.h>double f(double x){return pow(x,3)-x-1;}void main(){int i,j,k,nn=1000,n,m;double t,err=1e-4,dx=1;double x[nn],y[nn];x[0]=1,x[1]=2;printf("x估值前后误差迭代次数\n");for(k=1;k<nn&&dx>err;k++){x[k+1]=x[k]-f(x[k])*(x[k]-x[k-1])/(f(x[k])-f(x[k-1]));dx=fabs(x[k+1]-x[k]);printf("%0.4f %0.4f %d\n",x[k],dx,k);}}结果:x估值前后误差迭代次数2.0000 0.8333 11.1667 0.0864 21.2531 0.0841 31.3372 0.0134 41.3239 0.0009 51.3247 0.0000 6。
牛顿迭代法求平方根
牛顿迭代法求平方根牛顿迭代法(NewtonMethod)又称为牛顿-拉夫(Newton-Raphson)方法,是19世纪摩尔神父特拉沃尔纳斯牛顿在1700年创立的数值分析方法,用于解决多项式方程的根。
本文便以牛顿迭代法求求平方根这一话题,来具体介绍牛顿迭代法的原理和实现技术。
一、牛顿迭代法的概念所谓迭代法,就是重复运用某种规律多次得到解决方案。
牛顿迭代法是一种数值分析方法,它通过使用一系列近似极值点的迭代来搜索解决方案。
它既可以用来解决线性方程,也可以解决更复杂的非线性方程。
牛顿-拉夫(Newton-Raphson)方法对于求解平方根特别有效,可以快速收敛。
二、牛顿迭代法求求平方根1.一个数a的平方根,首先要把它转换为求解根的形式,即把求平方根转换为函数求解的问题:$f(x)=x^2-a=0$2.解函数f(x)的解时,可以采用牛顿迭代法,牛顿迭代法核心步骤:(1)求函数f(x)的导数:$f^{prime}(x)=2x$(2)找准一个初始值$x_0$,把它代入函数f(x)和其导数$f^{prime}(x)$,得到下一次的值:$x_1=x_0-frac{f(x_0)}{f^{prime}(x_0)}$(3)重复执行上述步骤,直到xn收敛:$x_{n+1}=x_n-frac{f(x_n)}{f^{prime}(x_n)}$3. 以求a的平方根为例:(1)函数$f(x)=x^2-a$的导数是$f^{prime}(x)=2x$(2)设$x_0$为猜测的值,则可以得到:$x_1=x_0-frac{x_0^2-a}{2x_0}$(3)重复此步骤,直到$x_n$收敛:$x_{n+1}=x_n-frac{x_n^2-a}{2x_n}$三、牛顿迭代法求求平方根应用实例这里以求解输入为12的平方根为例,用牛顿迭代法求出其平方根值。
首先,把问题转换为函数求解的问题,函数为:$f(x)=x^2-12=0$接着,求函数的导数:$f^{prime}(x)=2x$设猜测的$x_0$值为3,则可以得到:$x_1=3-frac{3^2-12}{2times3}=3-frac{3}{6}=2.5 $ 重复上述步骤,经10次迭代,可收敛到:$x_{10}=3.464101615$从上述结果可以看出,用牛顿迭代法求出的12的平方根为3.464101615,误差极小。
牛顿迭代法求根例题
牛顿迭代法求根例题牛顿迭代法是一种常用的数值计算方法,用于求解方程的根。
它基于函数在某一点附近的局部线性逼近,并通过不断迭代逼近方程的根。
下面我将以求解方程 f(x) = 0 的根为例,详细介绍牛顿迭代法的步骤和原理。
假设我们要求解方程 f(x) = 0 的根,首先需要选择一个初始近似解 x0。
然后,我们可以利用函数 f(x) 在 x0 附近的切线来逼近方程的根。
切线的斜率等于函数在 x0 处的导数 f'(x0),切线与x 轴的交点即为新的近似解 x1。
通过不断迭代这个过程,我们可以逐渐接近方程的根。
具体的迭代公式如下:x_(n+1) = x_n f(x_n) / f'(x_n)。
其中,x_n 表示第 n 次迭代得到的近似解,x_(n+1) 表示第n+1 次迭代得到的近似解。
下面以求解方程 f(x) = x^2 a = 0 的正根为例,来演示牛顿迭代法的步骤。
1. 选择初始近似解 x0。
2. 计算函数 f(x) 在 x0 处的导数 f'(x0)。
3. 根据迭代公式计算新的近似解 x1 = x0 f(x0) / f'(x0)。
4. 判断 x1 与 x0 的差值是否满足要求,如果满足则停止迭代,x1 即为方程的近似根;如果不满足,则将 x1 作为新的 x0,重复步骤 2 和步骤 3,直到满足要求。
通过不断迭代,我们可以逐渐逼近方程的根。
需要注意的是,牛顿迭代法的收敛性和迭代次数与初始近似解的选择有关,不同的初始近似解可能会得到不同的结果。
总结起来,牛顿迭代法是一种通过不断逼近函数根的数值计算方法。
它的步骤包括选择初始近似解、计算函数的导数、利用迭代公式计算新的近似解,直到满足要求为止。
该方法在实际应用中具有广泛的应用领域,如求解非线性方程、优化问题等。
牛顿迭代法求根例题
牛顿迭代法求根例题摘要:一、牛顿迭代法的概念与原理二、牛顿迭代法求根例题的解题步骤1.确定方程2.初始化近似根3.计算函数值4.确定迭代公式5.重复迭代6.收敛条件三、牛顿迭代法求根例题的解答与分析1.例题一2.例题二3.例题三四、总结与展望正文:一、牛顿迭代法的概念与原理牛顿迭代法,又称牛顿-拉夫逊法,是17世纪牛顿提出的一种近似求解实数域和复数域方程的方法。
它采用以下方法求根:先任意取一个接近实根的值x0作为第一近似根,然后由x0求出f(x0),使f(x)的切线通过(x0,f (x0))点,x轴与x1相交,作为第二近似根,再由x1求出f(x1),然后使f(x)的切线穿过(x1,f(x1))点,在x2处与x轴相交,作为新的近似根,如此重复迭代,直到满足收敛条件为止。
二、牛顿迭代法求根例题的解题步骤下面我们通过三个例题来讲解牛顿迭代法求根的步骤。
例题一:求方程f(x) = x^3 - 6x^2 + 9x - 2 = 0的根。
1.确定方程:方程为f(x) = x^3 - 6x^2 + 9x - 2 = 0。
2.初始化近似根:取x0 = 2作为第一近似根。
3.计算函数值:计算f(2) = 2^3 - 6*2^2 + 9*2 - 2 = 0。
4.确定迭代公式:根据牛顿迭代法,有x1 = x0 - f(x0)/f"(x0),其中f"(x)表示f(x)的导数。
5.重复迭代:计算x1 = 2 - 0/3 = 2,x2 = 2 - 0/6 = 2,此时已经满足收敛条件。
6.收敛条件:牛顿迭代法的收敛条件是迭代公式前后两项的比值小于某个预先设定的阈值。
例题二:求方程f(x) = x^3 - 3x^2 + 2 = 0的根。
1.确定方程:方程为f(x) = x^3 - 3x^2 + 2 = 0。
2.初始化近似根:取x0 = 1作为第一近似根。
3.计算函数值:计算f(1) = 1^3 - 3*1^2 + 2 = 0。
数值分析 数值分析 Newton迭代法求解非线性方程实验
}//计算出u[i][j]并输出.
第二部分 for(i=k+1;i<n;i++)
{s=0.0;
for(r=0;r<k-1;r++)
{s=s+l[k][r]*u[r][k];}
l[i][k]=(a[i][k]-s)/u[k][k];
printf("%Lf\n",l[i][k]);
{s=0.0;
for(r=0;r<k-1;r++)
{s=s+l[k][r]*u[r][k];}
l[i][k]=(a[i][k]-s)/u[k][k];
printf("l[%d][%d]%Lf\n",i,k,l[i][k]);}
}
}
六、实验结果
七、上机实验体会
在这个试验中同样叶出现了很多问题,对L,U的求解输出中,输出的位置的不同,结果也就会出差错.经过多次调整,结果总算输出了.
通过此次试验,我理解了多重循环的运用,并了解了古人的聪明智慧,]讲将复杂问题简单化,现在的大学生们,应该学习他们的创新及钻研精神。
for(k=0;k<n;k++)
{for(j=k;j<n;j++)
{s=0.0;
for (r=0;r<k-1;r++)
{s=s+l[k][r]*u[r][j];}
u[k][j]=a[k][j]-s;
printf("u[%d][%d]=%Lf\n",k,j,u[k][j]); }
for(i=k+1;i<n;i++)
迭代法举例
迭代法举例
迭代法是指通过反复迭代,逐步逼近求解方程的一种方法。
下面我们来举几个例子。
1.牛顿迭代法求解方程根
牛顿迭代法是一种求解方程根的迭代方法,假设需要求解的方程为f(x)=0,初始点为
x0,则可以通过以下迭代公式求解:
xn+1=xn-f(xn)/f'(xn)
其中f'(xn)表示f(x)在点xn处的导数。
通过不断的迭代求解,当f(xn+1)足够小的时候,就可以认为xn+1是方程f(x)=0的解。
这可以用来求解很多实际问题,例如求解非线
性方程、求解微积分中的最大值和最小值等。
2.雅可比迭代法求解线性方程组
x(k+1)=D^{-1}(b-(L+U)x(k))
其中D是A的对角线元素构成的对角矩阵,L和U分别是A的下三角和上三角部分矩阵。
这个迭代公式是通过将原方程组的系数矩阵A分解为D-(L+U)的形式而得到的。
使用雅可比迭代法求解线性方程组时,需要保证矩阵A是对称正定的,否则该方法可
能会失效。
此外,这个方法的收敛速度通常较慢。
3.梯度下降法求解函数最小值
其中α为步长,∇f(xn)表示f(x)在点xn处的梯度。
通过不断的迭代求解,可以逐步逼近函数f(x)的最小值。
但是需要注意的是,当该函数的梯度存在很大的方向差异时,梯度下降法的收敛速度
可能较慢,因此需要改进方法,例如Adagrad和Adam等算法,使得每个变量的更新步长可以根据过去的梯度值自适应地调整。
牛顿迭代法
一 .牛顿迭代法简介1.牛顿迭代法的产生背景牛顿迭代法(Newton's method)又称为牛顿-拉夫逊方法(Newton-Raphson method),它是牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法。
多数方程不存在求根公式,因此求精确根非常困难,甚至不可能,从而寻找方程的近似根就显得特别重要。
方法使用函数f(x)的泰勒级数的前面几项来寻找方程f(x)=0的根。
牛顿迭代法是求方程根的重要方法之一,其最大优点是在方程f(x)=0的单根附近具有平方收敛,而且该法还可以用来求方程的重根、复根,此时线性收敛,但是可通过一些方法变成超线性收敛。
另外该方法广泛用于计算机编程中。
利用牛顿迭代法来解决问题需要做好的工作:(1)确定迭代变量。
在可以用迭代算法解决的问题中,至少存在一个直接或间接地不断由旧值递推出新值的变量,这个变量就是迭代变量。
(2)建立迭代关系式。
所谓迭代关系式,指如何从变量的前一个值推出其下一个值的公式(或关系)。
迭代关系式的建立是解决迭代问题的关键,通常可以使用递推或倒推的方法来完成。
(3)对迭代过程进行控制。
在什么时候结束迭代过程?这是编写迭代程序必须考虑的问题。
不能让迭代过程无休止地重复执行下去。
迭代过程的控制通常可分为两种情况:一种是所需的迭代次数是个确定的值,可以计算出来;另一种是所需的迭代次数无法确定。
对于前一种情况,可以构建一个固定次数的循环来实现对迭代过程的控制;对于后一种情况,需要进一步分析出用来结束迭代过程的条件。
2.牛顿迭代法的概述牛顿迭代法(Newton's method)又称为牛顿-拉夫逊方法(Newton-Raphson method),它是牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法。
多数方程不存在求根公式,因此求精确根非常困难,甚至不可能,从而寻找方程的近似根就显得特别重要。
方法使用函数f(x)的泰勒级数的前面几项来寻找方程f(x)=0的根。
牛顿迭代法求根例题
牛顿迭代法求根例题摘要:1.牛顿迭代法的背景和定义2.牛顿迭代法求根的步骤3.牛顿迭代法求根的例题4.牛顿迭代法的优缺点正文:一、牛顿迭代法的背景和定义牛顿迭代法,又称牛顿- 拉夫逊法,是17 世纪英国著名数学家牛顿提出的一种近似求解实数域和复数域方程的方法。
该方法主要应用于求解非线性方程,具有较高的精度和较快的收敛速度。
二、牛顿迭代法求根的步骤牛顿迭代法求根的具体步骤如下:1.任意取一个接近实根的值x0 作为第一近似根;2.由x0 求出f(x0),使f(x)的切线通过(x0,f(x0))点;3.求出切线与x 轴的交点x1,作为第二近似根;4.由x1 求出f(x1),再使f(x)的切线穿过(x1,f(x1))点;5.求出切线与x 轴的交点x2,作为第三近似根;6.重复步骤4 和5,直到求得足够接近实根的结果。
三、牛顿迭代法求根的例题假设我们要求解以下一元三次方程:x^3 - 3x^2 + 2x - 1 = 0首先,我们任意取一个接近实根的值,例如x0 = 1。
然后,代入方程得到:f(1) = 1^3 - 3×1^2 + 2×1 - 1 = -1接下来,我们求出f(x)在x0 处的切线方程:y - (-1) = f"(1)(x - 1)化简得:y = -2(x - 1)切线与x 轴的交点即为第二近似根:-2(x1 - 1) = 0x1 = 1.5再由x1 求出f(x1):f(1.5) = 1.5^3 - 3×1.5^2 + 2×1.5 - 1 = -0.375求出f(x)在x1 处的切线方程:y - (-0.375) = f"(1.5)(x - 1.5)化简得:y = -1.25(x - 1.5)切线与x 轴的交点即为第三近似根:-1.25(x2 - 1.5) = 0x2 = 1.8重复步骤4 和5,我们可以得到更多的近似根:x3 ≈1.86602542571; x4 ≈1.86602542572; x5 ≈1.86602542573 可见,随着迭代次数的增加,得到的近似根越来越接近实根。
牛顿迭代法例题
牛顿迭代法例题牛顿迭代法是一种求函数零点的近似解的方法,其基本思想是通过函数的切线来逐步逼近零点。
下面是一个使用牛顿迭代法求解方程 x^2 - 2 = 0 的例题:设函数 f(x) = x^2 - 2,要求求解方程 f(x) = 0,即求出函数 f(x) 的根。
首先,选择一个初始近似解 x0,通常选择一个离目标解较近的值作为初始解。
假设初始解为 x0 = 1。
接下来,利用牛顿迭代公式来不断更新近似解,直到满足精度要求。
牛顿迭代公式为:xn+1 = xn - f(xn) / f'(xn),其中 f'(xn) 表示函数 f(x) 在点 xn 处的导数。
对于函数 f(x) = x^2 - 2,求导得到 f'(x) = 2x。
代入初始近似解 x0 = 1,得到 f'(x0) = 2。
根据牛顿迭代公式,更新近似解:x1 = x0 - f(x0) / f'(x0)= 1 - (1^2 - 2) / 2= 1 - (-1) / 2= 1 + 1/2= 1.5再继续进行迭代:x2 = x1 - f(x1) / f'(x1)= 1.5 - (1.5^2 - 2) / 2= 1.5 - (2.25 - 2) / 2= 1.5 - 0.25 / 2= 1.5 - 0.125= 1.375经过一定次数的迭代后,我们可以得到一个接近方程解的近似解 x2 = 1.375。
可以继续进行迭代,直到满足精度要求或者达到迭代次数限制。
通过以上步骤,可以使用牛顿迭代法求得方程 x^2 - 2 = 0 的近似解x ≈ 1.375。
newton迭代法
用牛顿法求解方程的根 ,每步除计算 f ( xk )外 还要算f ' ( xk ),当函数f ( x )比较复杂时,计算 f '( x)
往往比较困难,为此可 以在插值原理基础上 ,利
用数值微分的思想,根 据可求函数值 f ( xk ), f ( xk 1 ),
来回避导数值 f ' ( xk )的计算。 (均差代替导数)
设xk , xk 1是f ( x) 0的近似根, 利用f ( xk ), f ( xk 1 )构造一次插值多项式y
f ( xk ) f ( xk 1 ) y f ( xk ) ( x xk ). xk xk 1
用y 0的根,与x轴的交点,作为f ( x) 0的新的 近似根xk 1
3 xk 3 xk 1 xk 2 3 xk 3
Newtonddf.m
x0 =0.5; x1 =0.3333333333 x2 =0.3472222222 x3 =0.3472963532 x4 =0.3472963553
取初值 x0 0.5, 得
迭代四次
精度达10
-8
牛顿迭代法特点
2 f ( x ) f ( x ) f ( x ) f ( x ) f ( x ) ( x ) 1 2 2 f ( x ) f ( x )
f ( x) 0
* * 设f ( x )在x 邻近连续 ( x )在x 邻近连续,且
这是个线性方程,记其 根为xk 1,则xk 1的计算公式为 f ( xk ) xk 1 x k ( k 0,1,) f ( x k )
这就是牛顿( Newton)法.
牛顿法几何解释
牛顿法的几何解释
数值分析4 Newton迭代法
13/18
Newton迭代法的变形-弦截法
设x*是方程 f(x)=0 的根, x0和x1是x*附近 的两个点. 曲线 y=f(x) 在点(x0, f(x0)) 和点 (x1,f(x1))处的割线 与X轴交点
f(x) = 0
f ( x1 ) f ( x1 ) f ( x 0 ) x1 x 0 ( x x1 ) 0
7/18
例2.求 f(x)=xex – 1= 0 在 x0=0.5 附近的根 解: f ( x ) (1 x ) e x 迭代格式为
x n1 x n xne
xn
1
xn
1
x exp(x)-1
(1 x n ) e (n = 0, 1, ·· ·· ·)
f=inline('x*exp(x)-1'); f1=inline('(x+1)*exp(x)'); x0=1.5;er=1;k=0; while er>0.00001 x=x0-f(x0)/f1(x0); er=abs(x-x0) x0=x;k=k+1 end
100
0
-100
-200 -6 -4 -2 0 x 2 4 6
y = arctan x
9/18
取 x0=0,
x n1 x n
xn xn 3
3
3x 1
2 n
(n = 0, 1, ·· ·· ·)
y x1 x2 x3 x0 x
y=x – x – 3
3
Newton迭代法陷入死循环的另一个例子
《数值分析》4
Newton迭代格式
Newton迭代法的收敛性
Newton迭代法的变形
数值分析4牛顿迭代法课件
x1
x0
f ( x0 ) f ( x0 )
x*
x0 x1
x1比x0更接近于x*
02:12
4/25
应用——求正数平方根算法
设C > 0, x C
x2 – C = 0
令 f(x) = x2 – C , 则
xn1
xn
xn2 C 2 xn
f ( x) 2x
xn1
1 2 [xn
C ]
xn
02:12
5/25
1.414213562373095 2.22e-016
1.414213562373095 2.22e-016
02:12
6/25
收敛性: (1) 符合不动点框架
(2) 从序列收敛的角度(单调有界序列)
xn1
2
1 2 [xn
2 xn
]
2
1
[ 2
xn
2 xn
]2
1 2 xn
( xn
2 )2
只要x0 0, xn 2 (n 1) (有界)
x0, x1, x2,···, xn, ···
02:12
3/25
设 x*是方程 f(x)=0 的根, x0是x*的近似值。
在 x0 附近对函数做局部线性化
化难为易
f ( x) f ( x0 ) f ( x0 )( x x0 )化繁为简
f(x) = 0
f ( x0 ) f ( x0 )( x x0 ) 0
代入牛顿迭代格式
xn1
xn
f (xn ) f ( xn )
x1 x0
xn1
xn
f
( xn
f (xn ) ) f ( xn1 )
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于牛顿迭代法的圆形断面临界水深直接计算
学院:建筑工程学院学号:2111206052 姓名:王瑞峰
、问题来源
圆形断面由于具有受力条件好、适应地形能力强、水力条件好等优点,已成为农田灌溉、城市给水排水等工程较常采用的断面形式。
而临界水深的计算则是进行圆形断面
水力计算的关键,但其计算较繁杂,要求解高次隐函数方程,且未知量包含在三角函数中,求解难度大。
自20世纪90年代,对圆形断面临界水深的计算进行了大量研究,获得了较多成果。
鉴此,本文应用牛顿迭代算法,得到一种较简洁且可提供高精度算法程序的近似计算公式。
、数学模型
相应于断面单位能量最小值的水深称为临界水深,其计算公式为:
需满足的临界流方程为:
Qa - (2)
其中\亠八於一口•曲-;? ':芒
B r■缶由[附劄
式中,d为洞径;M为临界水深对应的圆心角,rad ;n为流速分布不均匀系数(不特殊说明时取1.0) ;Q为流量,m3ls;g为重力加速度(通常取9.81 m/s2);--分别为临界流对应的过水断面面积和水面宽度。
将式⑴、(3)、⑷代入式⑵得:
将式(5)整理即得临界水深的非线形方程:
f⑹• = * —呂(另?血£= 0 (6}
由此可知.式⑹ 为临界水深h。
的高次隐函数方程,且未知量包含在三角函数中。
即圆形断面临界水深的求解即为式(6)的求根问题。
在现行工程实际中计算临界水深时均采用近似公式或试算法,所得结果精度不高且效率较低。
三、方法选择
牛顿迭代法是求方程根的重要方法之一,其最大优点是在方程f(x) = 0的单根附近具有平方收敛,而且该法还可以用来求方程的重根、复根。
解非线性方程f(x)=0的牛顿法是把非线性方程线性化的一种近似方法。
把f(x)在x0点
附近展开成泰勒级数f(x) = f(xO)+(x —xO)f(xO)+(x —xO)A2*f'(xO)⑵+ •取其线性部分,作为非线性方程f(x) = 0的近似方程,即泰勒展开的前两项,则有f(xO)+f(xO)(x —
x0)=f(x)=0 设f(xO) 啖0其解为x1=x0 —f(xO)/f(xO)这样,得到牛顿法的一个迭代序列:
x(n +1)=x(n) —f(x(n))/f(x(n))。
在对式(6)的求解方法中,应首选牛顿迭代法,因为牛顿迭代法可快速求解出其他方法求不出或难以求出的解。
引入无量纲参数k:
将式⑺代入式⑹得:
>]* - =■ o te>
•:的一阶、二阶导函数分别为:
由牛顿迭代法可得:
fiU (10)
式中,'=0, 1, 2…为迭代次数;'■为’的初值。
将式(8)、(9)代入式(10),可得相应于式(6)临界水深对应中心角同的牛顿迭代公式:
H心如警片二更妙-C1D
、一彳■"(丽約cos
由式(11)迭代计算出临界水深对应的中心角国后,代入式(1)即可得临界水深。
根据文献,为避免渡状水面有可能接触洞顶引起水流封顶现象。
洞内水面线以上的空间不宜小于隧洞断面面积的15%,且高度不小于0.4m。
可得临界水深对应的中心角的最大值一般不超过4.692 ,相应可得无量纲参数日值的上限为0.5044。
故取值范围为[0.000
0,0.504 4]。
查阅文献与耳的近似公式:
$=4* 53脊"+冷+6 023 0<*C0. 504 4 (12)
若将式(12)视为初值函数,代入式(11)进行一次迭代计算,不仅得到了直接计算的公式, 且提高了计算结果的精度。
02$ -------- ——~4T~~;------------ <133
】-石応Rin 豆)Cto cOa^j
其中氓一洽";七亠咚昭
将式(13)代入式⑴即得圆形断面临界水深。
计算实例:
某引水式电站输水隧洞为圆形断面,已知洞径d=3.0 m,试确定设计流量Q=8.0m3/s时的临界水深。
四、编程实现
本文采用Fortran软件求解,程序的代码如下: program ex01
implicit none
reald,Q,k,x,g,y,h
parameter(g=9.81)
prin t*," 请输入洞身的直径:”
read*,d
prin t*," 请输入设计流量:”
read*,Q
k=Q*Q/(g*d**5)
prin t*," 可得无量参数k:",k
x=4.53*k**0.14+k+0.023
prin t*," 临界水深对应的圆心角初值为:
",xy=x-(x-8*(k*s in (0.5*x))**(1.0/3.0)-si n(x)"(1-(4.0/3.0)*k**(1.0/3.0)*(si n( x/2))**(-
2.0/
3.0)*cos(0.5*x)-cos(x))
prin t*," 临界水深对应的圆心角为:",y
h=d*0.5*(1-cos(0.5*y))
prin t*," 临界水深为:”,h
end
源程序编程截图如下:
计算结果截图如下:
I "Uw 3-1D l rskLt-p ,iA''DefaiMy ,.T-,»i.ll
4
会出现明满流交替现象,而此现象在水工设计中应杜绝;当日 <0. 902时,水深很小,
可忽略。
因此,只需对[O . 902, 4. 692]范围内的计算值与精确值进行比较。
为验证本 文提出方法的有效性及便于与现有计算方法比较,引入相对临界水深
X = hjd CU>
根据水力要素条件计算出相对临界水深的 z 取值范围为0. 05W x < 0. 85。
因此,在0.05
< X W 0.85范围给出一系列值,根据式⑴可计算出相对临界水深对应的 ’精确值,由式
(7)计算无量纲参数走,代入式 (13)求得计算值。
再进行精度评价。
设精确解为
-, 则相对误差为:
仙一捫"护 灯計
可以求得算例中相对误差仅为 0.005%。
六、实际意义分析
将牛顿迭代法原理应用于圆形断面临界水深所在的高次隐函数方程求解, 通过优化 计算得到了初值的近似公式, 从而得到了计算圆形断面临界水深的直接计算方法。
该方 法计算简单明确、结果可靠、实用性强, 且与其他方法相比在精度上有一定提高, 而计 算复杂程度并未增加,对实际工程实践有一定帮助。
五、误差要求
根据文献要求,临界水深对应的圆心角 ;最小值为0.902,最大值为4.692,当卜>4.692时, 2. N 自
-m? 3
t
* 亠目■:rr qhn 「刊空s k:的羽 t 甘
耳并M 晒
rLkkrr a 爭屐股凰KE。