主要内容

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

eqnproblem

方程式問題の作成

説明

eqnproblemを使用して方程式問題を作成します。

ヒント

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

概率= eqnproblemは,既定のプロパティで方程式問題を作成します。

概率= eqnproblem (名称,值は,1以上の名前と値のペアの引数を使用して追加オプションを指定します。たとえば,問題を作成する際に,方程の名前を使用することで,方程式を指定できます。

すべて折りたたむ

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

经验值 - 经验值 - 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;

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

xが2行2列の行列である場合,方程式

x 3. 1 2 3. 4

は多項方程式系です。ここで, x 3. は,行列乗算を使用した x x x を意味します。問題ベスのアプロチを使用して,この方程式系を容易に定式化し,解くことができます。

まず,変数xを2行2列の行列変数として定義します。

X = optimvar(“x”2、2);

xにいて解く方程式を定義します。

Eqn = x^3 == [1 2;3 4];

この方程式を使用して,方程式問題を作成します。

问题,问题“方程”, eqn);

[1 1;1 1]から始めて問題を解きます。

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

解を検証します。

disp (sol.x)
-0.1291 0.8602 1.2903 1.1612

解の3乗を表示します。

sol.x ^ 3
ans =2×21.000 2.000 3.0000 4.0000

入力引数

すべて折りたたむ

名前と値の引数

引数の任意のペアをName1 = Value1,…,以=家のように指定します。的名字は引数名,价值は対応する値です。名前と値の引数は、他の引数より後に指定されている必要があります。ただし、各ペアの順序は任意です。

R2021a以前では,それぞれの名前と値をコンマで区切り,的名字を引用符で囲みます。

例:prob = eqnproblem('Equations',eqn)

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

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

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

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

デタ型:字符|字符串

出力引数

すべて折りたたむ

方程式問題。EquationProblemオブジェクトとして返されます。通常,問題の説明を完了するには,概率。方程を指定し,さらに非線形方程式の場合は初期点の構造体を指定します。解决を呼び出して,完全な問題を解きます。

警告

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

バジョン履歴

R2019bで導入