当前位置:
文档之家› 非线性方程组求解及matlab实现
非线性方程组求解及matlab实现
逐步扫描法计算示例-方程x2-2=0的正数解
计算方程 x2 2 0 的正数解
二分法
若函数f(x)在区间[a,b]内单调连续,且f(a)f(b)<0, 则在闭区间[a,b]内必然存在方程f(x)=0的根x*
二分法的图形解释
二分法的MATLAB程序
k=0; while abs(b-a)>eps
非线性方程(组)求解
非线性方程(组)数值求解基本原理 多项式求根函数-roots 非线性方程求解函数-fzero 非线性方程组求解函数-fsolve
复习与练习
按以下要求编写一个函数计算 A y / x sin(45) x
的值,其中x>0时,y= 3 x ; x<0时,y=2/x; x=0时,返
x=(a+b)/2; if sign(f(x))==sign(f(b))
b=x; else
a=x; end k=k+1; end
二分法是一种可靠的算法,但计算速度较慢
二分法计算示例-方程x2-2=0的正数解
计算方程 x2 2 0 的正数解
求方程根的精确解
非线性方程(组)的求解一般采用迭代法进行。 迭代法是一种重要的逐次逼近方法。这种方法用某个
是称为有界的Wegstein法
MATLAB求解非线性方程方法
MATLAB求解非线性方程函数
非线性方程
多项式函数
非线性方程
非线性方程组
roots
fzero
fsolve
多项式求根函数roots
多项式的表达式约定如下:
P(x) ao x n a1 x n1 an1 x an
对于多项式,用以下行向量表示:
回错误信息(x cann’t be zero)
。
要求:1)主函数名称为excer1,x作为输如变量,A作 为输出变量;2) 主函数中包括一个子函数myfun用于 计算y的值。
引言
在945.36kPa(9.33atm)、300.2K时,容器中 充以2mol氮气,试求容器体积。已知此状态下 氮气的P-V-T关系符合范德华方程,其范德华常 数为a=4.17atm•L/mol2, b=0.0371L/mol
如果构造迭代格式如下:
1)x 1 2
x2 3 ,即x 1
2
x2 3 ,取x0 4,
得迭代格式如下:
1
xk1 2
xk2 3 ,k
0,1,2,
求得x1
1 2
x02 3
6.5
发散的迭代 格式
x2
1 2
x12 3
19.625
x3 191.070,
当k越来越大时,xk的值越来越远离于精确根
松弛迭代法是否有效的关键因素是松弛因子的值能否 正确选定。如果值选用适当,能使迭代过程加速,或 者使原来不收敛的过程变成收敛;但如果值选用不合 适,则效果相反,有时甚至会使原来收敛的过程变得 不收敛。松弛因子的数值往往要根据经验选定,但选 用较小的松弛因子,一般可以保证迭代过程的收敛
威格斯坦法
威格斯坦法在化工流程模拟中得到了广泛应用 威格斯坦法是一种迭代加速方法
松弛迭代法
有些非线性方程用前面的不动点迭代法求解时, 迭代过程是发散的。这时可以引入松弛因子, 利用松弛迭代法。通过选择合适的松弛因子, 就可以使迭代过程收敛
xn1 xn xn xn
迭代法是计算数学的一种重要方法,用途很广,求解 线性方程组和矩阵特征值时也要用到这种方法
松弛法注意事项
牛顿法注意事项
在有根区间[a,b]上,f '(x) 0, f "(x) 连续且不变号,则只 要选取的初始近似根x0满足 f (x0 ) f "(x0 ) 0 ,切线法 必定收敛。
在单根附近,牛顿公式恒收敛,而且收敛速度很快。 但是需要注意如果初始值不在根的附近,牛顿公式 不一定收敛
在实际使用中,牛顿法最好与逐步扫描法结合起来, 先通过逐步扫描法求出根的近似值,然后用牛顿公 式求其精确值,以发挥牛顿法收敛速度快的优点
非线性方程
非线性方程包括:高次代数方程、超越方程及其它们 的组合
与线性方程相比,非线性方程求解问题无论从理论上 还是从计算公式上都要复杂得多
对于高次代数方程,当次数>4时,则没有通解公式可 用,对于超越方程既不知有几个根,也没有同样的求 解方式。实际上,对于n≥3代数方程以及超越方程都 采用数值方法求近似根。
xk 1
xk
f
xk
f
xk
f
xk
1
xk
xk1
弦截法示意图
弦截法注意事项
与牛顿法只需给出一个初值不同,弦截法需要给出两 个迭代初值。如果与逐步扫描法结合起来,则最后搜 索的区间的两个端点值常可作为初值
弦截法虽比牛顿法收敛速度稍慢,但在每次迭代中只 需计算一次函数值,又不必求函数的导数,且对初值 要求不甚苛刻,是工程计算中常用的有效计算方法之 一
就是方程的根
上述求非线性代数方程式数值解的方法称为直
接迭代法(或称为不动点迭代法)。这个方法
虽然简单,但根本问题在于当k->∞时,xk是否
收敛于x*,也就是必须找出收敛的充分条件
例题:f x x2 2x 3 0
构造迭代格式如下:
1)x 2x 3,即x 2x 3,取x0 4,
得迭代格式如下:
不动点定理
设有(i) g,g’ ∈C[a,b], (ii) K是一个正常数,(iii) p0∈(a,b), (iv)对所有x ∈[a,b],有g(x)∈[a,b]
如果对于所有x ∈[a,b],有|g’(x)|≤K<1,则迭代 pn=g(pn-1)将收敛到惟一的不动点P ∈[a,b], 。 在这种情况下,P称为吸引(attractive)不动 点。对于所有x ∈[a,b],有|g’(x)| >1,则迭代 pn=g(pn-1)将不会收敛到P点。在这种情况下, P称为排斥(repelling)不动点,而且迭代显 示出局部发散性
xk1 2xk 3,k 0,1,2,
求得x1 2x0 3 11 3.317 x2 2x1 3 9.634 3.104
正确的收敛 的迭代格式
x3 3.034, x4 3.011, x5 3.004, 当k越来越大时,xk的值越来越接近于精确根p1)
P
O
P p0 p1
p2
x
1 g 'P
单调发散
y
y = g(x)
y=x
P
(p0,g(p0))
(p1,p1)
O
p1 P p0 p2
x
g 'P 1
振荡发散
牛顿法
牛顿法也称为牛顿-拉普森法或者切线法。由 于这个方法的计算结果颇佳,而计算过程也比 较简单,所以被普遍采用。
牛顿法的核心内容是通过泰勒级数将非线性方 程式转化为线性方程式,然后用迭代法求解。
弦截法虽比牛顿法收敛速度稍慢,但计算量小
逆二次插值(IQI)
若已知三个点a,b,c,及其函数值f(a),f(b),f(c), 可以将这三点插值为关于y的二次函数。此抛 物型一定与x轴有交点,在交点处y=0,对应点 x=P(0)为下一步迭代解。
IQI法在迭代终点时收敛速度很快,但整个过程中速度不稳定
牛顿迭代法收敛速度快,但它要求计算函数导数的值
弦截法
牛顿迭代法收敛速度快,但它要求计算函数导数的值。 在科学与工程计算中,常会碰到函数导数不易计算或 者算式复杂而不便计算的情况
弦截法的基本思想与牛顿法相似,即将非线性函数线 性化后求解。两者的差别在于弦截法实现函数线性化 的手段采用的是两点间的弦线(用差商代替导数), 而不是某点的切线
S (xn ) (xn1 )
xn xn1
xn1 (1 C)xn C(xn )
Wegstein法注意事项
令q=1-C 1. 当q=0时,Wegstein法退化为简单的不动点迭
代 2. 当0<q<1时,则变为有阻尼的迭代法。通常q>0
时,迭代能稳定收敛,但收敛较慢 3. 当q<0可以加速收敛,但易导致不稳定 4. 为了加速收敛又避免不稳定,常取-5<q<0,这
由上式可知,当松弛因子ω=1时,松弛迭代法变为不 动点迭代法;当松弛因子ω>1时,松弛法使迭代步长 加大,可加速迭代,但有可能使原理收敛的迭代变为 发散;当0<ω<1时,松弛法使迭代步长减小,这适合 于迭代发散或振荡收敛的情况,可使振荡收敛过程加 速;当ω<0时,将使迭代反方向进行,可使一些迭代 发散过程收敛
固定公式反复校正根的近似值,使之逐步精确化,最 后得到满足精度要求的结果。 常见的迭代算法有
不动点迭代 牛顿法 弦截法 抛物线法 威格斯坦法(Wegstein)
不动点迭代法
我们可以通过多种方法将方程式
f x 0 转化为 x gx
例如方程 x2 c 0, c 0
可以转化为以下不同形式
(1) x x2 x c
(2)
x c x
(3) x x x2 c 1 x c 2x 2 x
不动点迭代法
从给定的初值x0,按上式可以得到一个数列:
{ x0, x1, x2, …, xk, … }
如果这个数列有极限,则迭代格式是收敛的。
这时数列{xk}的极限
x*
lim
k
xk
牛顿法的几何意义
Y
y f x
x0, f x0 x1, f x1
切线方程
y f (x0 ) (x x0 ) f '(x0 )
X
O
x*
x1
x0
例:牛顿法计算x^2-25=0的解
f(x)=x2-25,则f’(x)=2x
可构造迭代公式如下:
xi1
xi