135-7-4牛顿下山法、弦截法、解非线性方程组的牛顿法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Clear[f,x0]
f[x_]:=x^3-x-1;
牛 顿 Plot[f[x],{x,0,2}]
下 x[n_]:=x[n-1]-f[x[n-1]]/f'[x[n-1]]
山 法
x[0]=0.6;
N[Table[x[n],{n,1,4}],5]
N[Solve[f[x]==0,x],20]
N[Solve[f[x]==0,x],20][[1]]
f ( xk1 ) f ( xk )
牛
满足这项要求的算法称下山法.
顿 思路
下
将牛顿法与下山法结合起来使用,即在下山法
山
保证函数值稳定下降的前提下,用牛顿法加快收敛速度
法
为此,将牛顿法的计算结果
xk 1
xk
f xk f xk
与 前 一 步 的 近 似 值xk 适 当 加 权 平 均 作 为 新 的改 进 值
y0 y0
) )
00.0.111828
典型例题
解 方 程 组 :J
.
x y
f (x0 , g( x0 ,
y0 y0
) )
即
求
解
:
2 e
x
x
2y 1
x y
00.0.111828
2 2.71828
3.14
x y
00.0.111828
x y
00..00427569389752
得:
w1
x1 y1
=
x0 y0
f[x_]:=(x-1)^3(x-2);
Clear[x,xx] f[x_]:=(x-1)^3(x-2) g[x_]:=x-f[x]/f'[x] x=0.9; xx=0.9; Do[x=g[x];Print[" ",x],{k,1,7}] Abs[g'[xx]]-1//N Clear[x] Solve[f[x]==0,x]
wk
x y
记作
x y
k k
1 1
典型例题
例1
求
解
非
线
性
方
程
组:f ( x, g( x,
y) y)
4 x 1 ex
2y y
2
取初始值:w0 11.7
f
记
Jwk.baidu.com
x g
x
f
y g
2x ex
y ( x1 , y1 )
2y
2 3.4
1 (1,1.7) 2.71828 1
F
(w0
)
f (x0 , g( x0 ,
典型例题
f ( x) x 3 7.7x 2 19.2x 15.3在x0 1附近的根。
Clear[f,x,xx]
f[x_]:=x^3-7.7x^2+19.2x-15.3
程
g[x_]:=x-f[x]/f'[x]
序
x=0.5;
设
xx=0.567;
Do[x=g[x];Print[k," ",x],{k,1,8}]
弦
截 法
还要算f '( xk ),当函数f ( x)比较复杂时,计算f '( x)
原 理
往往比较困难,为此可以在插值原理基础上,利
用数值微分的思想,根据可求函数值f ( xk ), f ( xk1 ),
来回避导数值f '( xk )的计算。(均差代替导数)
设xk , xk1是f ( x) 0的近似根,利用f ( xk ), f ( xk1 )构造一次插值多项式p1( x)
弦 截
解
Clear[f,x0]
法
f[x_]:=x^3-7.7x^2+19.2x-15.3;
典
Plot[f[x],{x,0,4}]
型
x[0]=1.5;
例
x[1]=2;
题
x[n_]:=x[n-1]-f[x[n-1]](x[n-1]-x[n-2])/(f[x[n-1]]-f[x[n-2]])
N[Table[x[n],{n,1,8}],20];
xk1 xk1 (1 ) xk ,
其中 (0 1), 称为下山因子
xk1
xk
f (xk ) f '(xk )
(k 0,1,2...)
牛
顿
称为牛顿下山法
下
山 法
取
{1,
1 2
,
1 4
,...
1 2m
}
直到满足:
f ( xk1 ) f ( xk )
Mathematica牛顿法
{x -> 0.567143}
用牛顿法解方程 xe x 1 0.
典型例题
Clear[f,x,xx]
f[x_]:=x*Exp[x]-1
程
g[x_]:=x-f[x]/f'[x]
序
x=0.5;
设
xx=0.567;
Do[x=g[x];Print[k," ",x],{k,1,8}]
计
Abs[g'[xx]]-1//N
弦
截 法
牛顿法需要一个初始值,通常取根所在区间的中点,而弦截法需
及
要两个初始值,通常取根所在区间的端点。
其
原 理
弦截法只需要计算函数值,而牛顿法既要计算函数值,还要计
原
算导数值,弦截法计算强度小于牛顿法.
理
弦截法收敛速度稍慢于牛顿法.
例1 用弦截法解方程 f ( x) x3 7.7x2 19.2x 15.3 0的根,取x0 1.5, x1 2
顿
解 法
f
( x0 ,
y0
)
(x
x0
)
f
( x0 , x
y0
)
(
y
y0
)
f
( x0 , y
y0
)
0
g(
x
0
,
y0 )
(x
x0 )
g( x0 , x
y0
)
(
y
y0
)
g( x0 , y
y0 )
0
1
令 x x0 x, y y0 y 则有:
非 线 性 方
x
f
(x0 , x
y0
)
y
f
(x0 , y
f (xk ) f '(xk )
中用差商
f
( xk ) xk
f ( xk1 ) xk 1
取代导数f
'( xk
)
弦截法的几何解释
y
xk1
xk
f
( xk
f (xk ) ) f ( xk1 )
( xk
xk1 )
弦
截
法
及
其
原
理
xk 1
xk1
xk2
xk3
a
xk b x
弦截法与牛顿法的比较
弦截法与切线法(牛顿法)都是线性化方法
Clear[x,xx] f[x_]:=(x-1)^3(x-2) g[x_]:=x-3f[x]/f'[x] x=0.9; xx=0.9; Do[x=g[x];Print[" ",x],{k,1,3}] Abs[g'[xx]]-1//N Clear[x] Solve[f[x]==0,x]
Plot[f[x],{x,0,4}] x[0]=0.9; x[1]=1.1; x[n_]:=x[n-1]-f[x[n-1]](x[n-1]x[n-2])/(f[x[n-1]]-f[x[n-2]]) N[Table[x[n],{n,1,8}],20]; MatrixForm[%] N[Solve[f[x]==0,x],20][[2]]
Mathematica牛顿下山法
从 1开始逐次
Clear[f,x0] f[x_]:=x^3-x-1; Plot[f[x],{x,0,2}] x[0]=0.6;
减半进行试算, 直到 f ( x1 ) f ( x0 ) 为止,然后用牛顿 公式计算即可。
x[1]:=x[0]-(1/32)f[x[0]]/f'[x[0]]
4. -1.
计
Clear[x]
5. 0.
FindRoot[f[x]==0,{x,0.1I}]
-0.170616
{x -> -0.5 + 0.866025 I}
f ( x) x2 x 1 的图形
程 序 设 计
典型例题
典型例题
例1
用弦截法解方程
f ( x) x 3 7.7x 2 19.2x 15.3的根,取x0 1.5, x1 4
迭代解
序
g[x_]:=x-f[x]/f'[x];
Abs[g'[xx]]-1//N
{0.57102,
设
x[n_]:=x[n-1]-f[x[n-1]]/f'[x[n-1]]
0.56716,
计
x[0]=0.5;
N[Table[x[n],{n,1,3}],5]
0.56714} 精确解
MatrixForm[%] FindRoot[f[x]==0,{x,3}]
MatrixForm[%]
N[Solve[f[x]==0,x],20]
例2
已知: f ( x) ( x 1)3 ( x 2) 0
(1) 取 x0 0.9,用牛顿迭代法计算
(2)取x0 0.9,用牛顿重根迭代公式计算
(3)取x0 0.9, x1 1.1,用弦截法计算 Clear[f,x0]
请同学们完成!
典型例题
例2
已知: f ( x) ( x 1)3 ( x 2) 0
(1) 取 x0 0.9,用牛顿迭代法计算 (2)取x0 0.9,用牛顿重根迭代公式计算 (3)取x0 0.9, x1 1.1,用弦截法计算
教材P196例题5
x
f
( x1 , x
y1 )
y
f
(x1 , y
y1 )
f
( x1 ,
y1 )
x
g( x1 , x
y1
)
y
g( x1 , y
y1
)
g(
x1 ,
y1
)
方
f f
程 组 的 牛
记
J
x g
x
y g
y ( x1 , y1 )
当 J 0时,解出x, y
顿 解 法
迭 代:
w2
w1
x y
记作
x2 y2
依 此 类 推 可 得 : w k 1
Clear[x]
FindRoot[f[x]==0,{x,3}]
迭代解
1. 0.57102 2. 0.567156 3. 0.567143 4. 0.567143 5. 0.567143 6. 0.567143 7. 0.567143 8. 0.567143 精确解
{x -> 0.567143}
用牛顿法解方程
Abs[f[x[0]]]
Abs[f[x[1]]]
x[n_]:=x[n-1]-f[x[n-1]]/f'[x[n-1]]
N[Table[x[n],{n,2,5}],6]
N[Solve[f[x]==0,x],20];
N[Solve[f[x]==0,x],20][[1]]
弦截法及其原理
用牛顿法求解方程的根,每步除计算f ( xk )外
y0
)
f
(
x0
,
y0
)
x
g( x0 , x
y0
)
y
g( x0 , y
y0
)
g( x0
,
y0
)
程 组 的 牛 顿
f
记
J
x g
x
f y g y
( x0 , y0 )
当 J 0时,解出x, y
解
法
迭 代:
w1
w0
x y
记作
x1 y1
再令 x x1 x, y y1 y 解方程组:
1
非 线 性
为了叙述方便,以解二阶非线性方程组为例演示解题方法和步骤
非 线
设二
阶
方
程
组:gf((xx,,
y) y)
0 0
性 方 程
写
成向量
形
式 :F
(w)
f (x, g( x,
yy)),
其
中w
x y
组 的 牛
将f ( x, y),g( x, y)在( x0 , y0 )附近作二元泰勒展开, 并取其线性部分,得到方程组:
x y
得:
wk1
xk1 yk1
=
xk yk
x y
思 考 题
弦截法回避了计算机中求导的问题,它能否 推广到非线性方程组的求解中?
用牛顿法解方程 xe x 1 0.
典型例题
Clear[f,x0]
f[x_]:=x*Exp[x]-1;
Plot[f[x],{x,-1,1}]
运行结果:
程
xx=0.5671;
p1( x)
f (xk )
f
(
xk ) xk
f ( xk1 ) xk 1
(
x
xk
).
弦 截
用p1( x) 0的根作为f ( x) 0的新的近似根xk1
法 及 其
不难导出:xk1
xk
f
( xk
f (xk ) ) f ( xk1 )
( xk
xk1 ).
原
此公式等价于在牛顿公式
理
xk1 xk
用牛顿法分别求解方程 f ( x) x 2 x 1 在x0 1,x0 I附近的根。
典型例题
f[x_]:=x^2+x+1
迭代解
程
g[x_]:=x-f[x]/f'[x]
1. 0.
序
x=1.0
2. -1.
Do[x=g[x];Print[k," ",x],{k,1,5}]
3. 0.
设
Abs[g'[xx]]-1//N
第 七
非线插性方值程(法组)数值解法
章
主讲教师:刘春凤
1 方程求根与二分法 2 迭代法及其收敛性 3 牛顿法及改进的牛顿法 4 牛顿下山法与弦截法
5 非线性方程组的牛顿法
牛顿下山法及其原理 弦截法
如果不收敛,能否继续改进牛顿法呢?
牛
顿
下山
迭
代
法
的
改
进
地面
上山
牛顿下山法
为了防止迭代发散,要求迭代满足单调性:
计
Abs[g'[xx]]-1//N
Clear[x]
FindRoot[f[x]==0,{x,3}]
迭代解
1. 0.57102 2. 0.567156 3. 0.567143 4. 0.567143 5. 0.567143 6. 0.567143 7. 0.567143 8. 0.567143 精确解
{x -> 0.567143}