牛顿法

维基百科,自由的百科全书
跳转到: 导航, 搜索
Ganzhi001.jpg

牛顿法Newton's method)又称为牛顿-拉弗森方法Newton-Raphson method),它是一种在实数域和复数域上近似求解方程的方法。方法使用函数f(x)泰勒级数的前面几项来寻找方程f(x)=0的根。

目录

[编辑] 起源

牛顿法最初由艾萨克·牛顿流数法Method of Fluxions1671年完成,在牛顿死后的1736年公开发表)。约瑟夫·拉弗森也曾于1690年Analysis Aequationum中提出此方法。

[编辑] 方法说明

首先,选择一个接近函数f(x)零点的x_0,计算相应的f(x_0)和切线斜率f'(x_0)(这里f'表示函数f导数)。然后我们计算穿过点(x_0, f(x_0))并且斜率为f'(x_0)的直线和x轴的交点的x坐标,也就是求如下方程的解:

x\cdot f'(x_0)+f(x_0)-x_0\cdot f'(x_0)=0

我们将新求得的点的x坐标命名为x_1,通常x_1会比x_0更接近方程f(x)=0的解。因此我们现在可以利用x_1开始下一轮迭代。迭代公式可化简为如下所示:

x_{n+1} = x_n - \frac{f(x_n)}{f'(x_n)}

已经证明,如果f'连续的,并且待求的零点x是孤立的,那么在零点x周围存在一个区域,只要初始值x_0位于这个邻近区域内,那么牛顿法必定收敛。 并且,如果f'(x)不为0, 那么牛顿法将具有平方收敛的性能. 粗略的说,这意味着每迭代一次,牛顿法结果的有效数字将增加一倍。

[编辑] 牛顿法开方的例子

《从牛顿二项式定理开方到牛顿切线法》

(136期《数学传播》作者王晓明王蕊珂,编写者也是王蕊珂,不存在版权问题。

A的开k次方等价于求函数:

f(x)=x^k - A

的零点。可利用牛顿法求上述函数的零点:

x_{n+1} = x_n - \frac{f(x_n)}{f'(x_n)}=X_{n}+(A/X^{k-1}_{n}-X_{n})1/k

例如开立方: X_{n+1}=X_{n}+(A/X^{2}_{n}-X_{n})1/3

设:A=5,即k=3,即求:\sqrt[3]{5}=x,5介于1³至2³之间(1的3次方=1,2的3次方=8)

  初始值X_{0}可以取1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2.0都可以。例如我们取X_{0}=2.按照公式:

  第一步:X_{1}=2+(5/2²-2)1/3=1.75。输入值大于输出值,负反馈; 即5/2×2=1.25,1.25-2=-0.75,-0.75×1/3=-0.25,2+(-0.25)=1.75,比前面多取一位數。即取2位数值,即1.7。

  第二步:X_{2}=1.7+(5/1.7²-1.7)1/3=1.71.输入值小于输出值,正反馈。 即5/1.7×1.7=1.73010,1.7301-1.7=0.03,0.03×1/3=0.01,1.7+0.01=1.71。取3位数,比前面多取一位数。

  第三步:X_{3}=1.71+(5/1.71²-1.71)1/3=1.709.

  第四步:X_{4}=1.709+(5/1.709²-1.709)1/3=1.7099

  这种方法可以自动调节,第一步与第三步取值偏大,但是计算出来以后输出值会自动转小;第二步,第四步输入值

偏小,输出值自动转大。即5=1.7099³

  当然初始值X_{0}也可以取1.1,1.2,1.3,。。。1.8,1.9中的任何一个,都是X_{1}=1.7>。當然,我們在實際中初始值最好採用中間值,即1.5。 1.5+(5/1.5²-1.5)1/3=1.7。

如果用這個公式開平方

X_{n+1}=X_{n}+(A/X_{n}-X_{n})1/2.

例如,A=5:\sqrt[]{5}=x

5介於2²至3²之間。我們取初始值2.1,2.2,2.3,2.4,2.5,2.6,2.7,2.8,2.9都可以,我們最好取 中間值2.5。 第一步:2.5+(5/2.5-2.5)1/2=2.2;

即5/2.5=2,2-2.5=-0.5,-0.5×1/2=-0.25,2.5+(-0.25)=2.25,取2位數2.2。

第二步:2.2+(5/2.2-2.2)1/2=2.23;

即5/2.2=2.272727,2.272727-2.2=-0.072727,-0.072727×1/2=-0.036363,2.2+0.036363=2.23。取3位數。

第三步:2.23+(5/2.23-2.23)1/2=2.236。

即5/2.23=2.242,2.242-2.23=0.012,0.012×1/2=0.006,2.23+0.006=2.236.

每一步多取一位數。計算次數與計算精確度成為正比。這個方法又叫反饋開方,即使你輸入一個錯誤的數值,也沒有關係,輸出值會自動調節,接近準確值。

这个方法的依据是根据牛顿切线法得来。也可以通过牛顿二项式定理推出。

  A=(X+-Y)^{K} 展开,把A展开后代入公式就得到推导过程。X是假想值,Y是误差值Y=(A/X^{k}_{n}-X_{n})1/k

  X_{n+1}=X_{n}-(X^{K}-A)/(KX^{K-1})=X_{n}-f(X)/f'(x)=X_{n}+(A/X^{K-1}-X_{n})1/K

  f(X)=X^{K}-A ; f'(X)=X^{K-1}K .

[编辑] 其它例子

[编辑] 第一个例子

求方程f(x) = cos(x) − x3的根。两边求导,得f '(x) = −sin(x) − 3x2。由于-1 ≤ cos(x) ≤ 1(对于所有x),则-1 ≤ x3 ≤ 1,即-1 ≤ x ≤ 1,可知方程的根位于0和1之间。我们从x0 = 0.5开始。

\begin{matrix}
  x_1 & = & x_0 - \frac{f(x_0)}{f'(x_0)} & = & 0.5 - \frac{\cos(0.5) - 0.5^3}{-\sin(0.5) - 3 \times 0.5^2} & = & 1.112141637097 \\
  x_2 & = & x_1 - \frac{f(x_1)}{f'(x_1)} & = & \vdots & = & \underline{0.}909672693736 \\
  x_3 & = & \vdots & = & \vdots & = & \underline{0.86}7263818209 \\
  x_4 & = & \vdots & = & \vdots & = & \underline{0.86547}7135298 \\
  x_5 & = & \vdots & = & \vdots & = & \underline{0.8654740331}11 \\
  x_6 & = & \vdots &= & \vdots & = & \underline{0.865474033102}
\end{matrix}

[编辑] 第二个例子

牛顿法亦可发挥与泰勒展开式,对于函式展开的功能。


求a的m次方根。

x^m - a= 0

f(x) = x^m - af'(x) = mx^{m-1}

而a的m次方根,亦是x的解,

以牛顿法来迭代:

x_{n+1} = x_n - \frac{f(x_n)}{f'(x_n)}

x_{n+1} = x_n - \frac{x_n^m-a}{mx_n^{m-1}}

x_{n+1} = x_n - \frac{x_n}{m}(1-ax_n^{-m})


(或 x_{n+1} = x_n - \frac{1}{m}(x_n-a\frac{x_n}{x_n^m}))

[编辑] 外部链接

http://blog.163.com/wangxiaoming_550/blog/static/9210829120111206451948/从牛顿二项式定理开方到牛顿切线法

个人工具
名字空间
操作
导航
帮助
工具
其他语言