主要内容

制約のある非線形方程式系,問題ベ,ス

この例では,問題ベースのアプローチを使用して,制約のある非線形方程式系を解こうとする方法を示します。

範囲制約

問題に範囲制約のみがある場合,問題を解くプロセスは単純です。たとえば,次の方程式系の正の成分をも解を求めるとします。

x 1 + 1 10 - x 1 1 + x 2 2 1 + x 2 2 + x 2 0 x 2 + 2 20. - x 2 1 + x 1 2 1 + x 1 2 + x 1 0

この場合,下限を0とする最適化変数を作成するだけです(これらの方程式には, x 1 - 1 または x 1 1 0 の場合,および x 2 - 2 または x 2 2 0 の場合の4の解があります)。

X = optimvar(“x”2,“下界”, 0);expr1 = (x (1) + 1) * (10 - x (1)) * ((1 + x (2) ^ 2)) / (1 + x (2) ^ 2 + (2));expr2 = (x (2) + 2) * (20 - x (2)) * ((1 + x (1) ^ 2)) / (1 + x (1) ^ 2 + x (1));Eqn1 = expr1 == 0;Eqn2 = expr2 == 0;Prob = eqnproblem;prob.Equations。Eqn1 = Eqn1;prob.Equations。Eqn2 = Eqn2;x0。x= [15,15]; [sol,fval,exitflag] = solve(prob,x0)
方程问题具有约束条件。重新定义为最小二乘问题。使用lsqnonlin解决问题。方程解决。Lsqnonlin完成,因为函数值的向量通过函数公差的值测量接近于零,并且通过梯度测量问题显得有规律。
索尔=带字段的结构:X: [2x1 double]
fval =带字段的结构:Eqn1: 0 eqn2: 0
exitflag =方程式解决

解を表示します。

sol.x
ans =2×110个20

一般的制約

問題に一般的制約がある場合,方程式問題ではなく最適化問題として,問題を定式化します。方程式は等式制約として設定します。たとえば,非線形不等式制約 x 2 1 0 を条件として前述の方程式を解くには,xの範囲を削除し,目的関数のない最適化問題として問題を定式化します。

x.LowerBound = [];圆= x(1)^2 + x(2)^2 <= 10;Prob2 =优化问题;prob2.Constraints。圆圈=圆圈;prob2.Constraints。Eqn1 = Eqn1;prob2.Constraints。Eqn2 = Eqn2;[sol2,fval2,exitflag2] = solve(prob2,x0)
使用fmincon解决问题。找到满足约束条件的局部最小值。优化完成是因为目标函数在可行方向上不递减,在最优性容差值范围内,约束条件满足在约束容差值范围内。
sol2 =带字段的结构:X: [2x1 double]
Fval2 = 0
exitflag2 = OptimalSolution

解を表示します。

sol2.x
ans =2×1-1.0000 - -2.0000

最小二乗法の目的を使用した一般的制約

目的関数を二乗和として設定し,制約として一般的制約を設定することで,問題を定式化することもできます。この別の定式化を行うと,数学的には等価な問題になりますが,異なる解が得られることがあります。定式化が変わると,ソルバ,での反復回数が変わるからです。

Prob3 =优化问题;prob3。目标= expr1^2 + expr2^2;prob3.Constraints。圆圈=圆圈;[sol3,fval3,exitflag3] = solve(prob3,x0)
使用fmincon解决问题。找到满足约束条件的局部最小值。优化完成是因为目标函数在可行方向上不递减,在最优性容差值范围内,约束条件满足在约束容差值范围内。
sol3 =带字段的结构:X: [2x1 double]
Fval3 = 8.0569e-16
exitflag3 = OptimalSolution

解を表示します。

sol3.x
ans =2×1-1.0000 - -2.0000

この場合,最小二乗法の目的によって,制約しか使用していない先ほどの定式化と同じ解が得られます。

制約のある方程式の求解の詳細

一般的に,解决は,方程式要素の二乗和を最小にすることにより非線形方程式系を解こうとします。まり,lh(我)が方程式の左辺の式であり,RHS(我)が右辺の式である場合,解决总和(韩- - - - - -RHS) ^ 2)。を最小化しようとします。

これに対し,非線形制約式を満たそうとする場合,解决は一般的にfminconを使用し,別の方法で制約を満たそうとします。

どらの場合も,ソルバは方程式の求解に失敗する可能性があります。ソルバが失敗した際に,求解を試みるために使用できる方法にいては,Fsolveが方程式を解けないを参照してください。

参考

関連するトピック