主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

EquationProblem

説明

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

ヒント

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

作成

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

概率= eqnproblem;x = optimvar (“x”);方程= x^5 - x^4 + 3*x = 1/2;prob.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番目の方程式も最適化等式として作成します。

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

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

概率= eqnproblem;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 (2 x1双):
fval =结构体字段:e1: -2.4070e-07 e2: -3.8255e-08
exitflag = EquationSolved

解の点を表示します。

disp (sol.x)
0.3532 - 0.6061

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

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

ls1 = fcn2optimexpr (@ (x) exp (exp (- x (x (1) + (2)))), x);方程1 = ls1 == x(2)*(1 + x(1)^2);ls2 = fcn2optimexpr (@ (x) x (1) * cos (x (2)) + x (2) * sin (x (1)), x);eq = ls2 == 1/2;

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

R2019bで導入