主要内容

EquationProblem

非線形方程式系

説明

最適化変数を使用して方程式系を指定し,解决を使用して解きます。

ヒント

完全なワクフロに,方程式を解くための問題ベスのワクフロを参照してください。

作成

関数eqnproblemを使用して,EquationProblemオブジェクトを作成します。OptimizationEqualityオブジェクトを作成し,これをEquationProblemオブジェクトの方程プロパティとして設定することにより,問題に方程式を追加します。

问题;X = optimvar(“x”);Eqn = x^5 - x^4 + 3*x == 1/2;probe . equations .eqn = eqn;

警告

問題ベースのアプローチでは,目的関数,非線形等式,または非線形不等式における複素数値をサポートしていません。関数の計算に複素数値が含まれていると,それが中間値としてであっても,最終結果が不正確になる場合があります。

プロパティ

すべて展開する

問題の方程式。OptimizationEquality配列またはフィルドとしてOptimizationEquality配列をも構造体として指定します。

例:和(x ^2,2) == 4

問題のラベル。字符串または文字ベクトルとして指定します。描述はソフトウェアでは計算に使用されません。描述は,あらゆる理由で自由に使用できるラベルです。たとえば,モデルまたは問題を共有,ア,または提示し,モデルまたは問題に関する説明情報を描述に保存できます。

例:“旅行推销员问题的迭代方法”

デタ型:字符|字符串

このプロパティは読み取り専用です。

オブジェクトの最適化変数。OptimizationVariableオブジェクトの構造体として指定します。

デタ型:结构体

オブジェクト関数

optimoptions 最適化オプションの作成
prob2struct 最適化問題または方程式問題のソルバ形式への変換
显示 最適化オブジェクトの情報表示
解决 最適化問題または方程式問題の求解
varindex ソルバベスの変数ンデックスへの問題変数のマッピング
最適化オブジェクトの説明の保存

すべて折りたたむ

次の非線形方程式系を解きます。

经验值 - 经验值 - x 1 + x 2 x 2 1 + x 1 2 x 1 因为 x 2 + x 2 x 1 1 2

問題ベスのアプロチを使用する場合は,まずxを2要素の最適化変数として定義します。

X = optimvar(“x”2);

最初の方程式を最適化等式として作成します。

eq1 = exp (exp (- x (x (1) + (2)))) = = x (2) * (1 + x (1) ^ 2);

同様に,2番目の方程式も最適化等式として作成します。

Eq2 = x(1)*cos(x(2)) + x(2)*sin(x(1)) == 1/2;

方程式問題を作成し,方程式を問題に配置します。

问题;prob.Equations。Eq1 = Eq1;prob.Equations。Eq2 = Eq2;

問題を確認します。

显示(概率)
EquationProblem:解:x eq1: exp ((exp ((- x (x (1) + (2 )))))) == ( x (2) * (1 + x (1) ^ 2)) eq2: ((x(1)。* cos (x (2))) + (x(2)。* sin (x (1)))) = = 0.5

(0,0)から始めて問題を解きます。問題ベスのアプロチの場合,初期点を構造体として指定します。変数名は構造体のフィルドとします。この問題の変数はxの1しかありません。

x0。x=[0 0]; [sol,fval,exitflag] = solve(prob,x0)
用fsolve解决问题。方程解决。Fsolve完成了,因为函数值的向量通过函数公差的值测量接近于零,并且通过梯度测量问题看起来是规则的。
索尔=带有字段的结构:X: [2x1 double]
fval =带有字段的结构:eq2: -2.4070e-07 eq2: -3.8255e-08
exitflag = equationresolved

解の点を表示します。

disp (sol.x)
0.3532 - 0.6061

fcn2optimexprを必要とするサポトされていない関数

方程式の関数が初等関数で構成されていない場合,fcn2optimexprを使用して,その関数を最適化式に変換しなければなりません。次に例を示します。

ls1 = fcn2optimexpr (@ (x) exp (exp (- x (x (1) + (2)))), x);Eq1 = ls1 == x(2)*(1 + x(1)²);ls2 = fcn2optimexpr (@ (x) x (1) * cos (x (2)) + x (2) * sin (x (1)), x);Eq2 = ls2 == 1/2;

詳細は,最適化変数および式でサポトされる演算非線形関数から最適化式への変換を参照してください。

バジョン履歴

R2019bで導入