主要内容

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

方程式を解くための問題ベースのワークフロー

メモ

优化工具箱™には,方程式を解くためのアプローチが2通りあります。このトピックでは,問題ベースのアプローチについて説明します。ソルバーベースの最適化問題の設定では,ソルバーベースのアプローチについて説明しています。

方程式系を解くには,以下の手順を実行します。

  • eqnproblemを使用して,方程式問題オブジェクトを作成します。問題オブジェクトは,方程式を定義するコンテナーです。方程式問題オブジェクトは,問題と,問題変数に存在する範囲を定義します。

    例として,方程式問題を作成します。

    概率= eqnproblem;
  • optimvarを使用して,名前付き変数を作成します。最適化変数は,方程式を記述するために使用するシンボリック変数です。変数定義に範囲を含めます。

    たとえば,“x”という名前の変数の15行3列の配列を作成し,下限を0上,限を1とします。

    x = optimvar (“x”15日3下界的0,“UpperBound”1);
  • 問題変数の方程式を定義します。以下に例を示します。

    Sumeq = sum(x,2) == 1;prob.Equations.sumeq = sumeq;

    メモ

    多項式,有理式,および初等関数(经验值など)で構成されていない非線形関数がある場合は,その関数をfcn2optimexprを使用して最適化式に変換します。詳細は,非線形関数から最適化式への変換最適化変数および式でサポートされる演算を参照してください。

    必要に応じて,方程式にワークスペース変数として追加のパラメーターを含めます。問題ベースのアプローチでの追加パラメーターの受け渡しを参照してください。

  • 非線形問題の場合,フィールドが最適化変数名となっている構造体として,初期点を設定します。以下に例を示します。

    x0。x = randn(大小(x));x0。y =眼睛(4);%假设y是一个4 × 4的变量
  • 解决を使用して問題を解きます。

    索尔=解决(问题);或者,对于非线性问题,索尔=解决(x0概率)

これらの基本的な手順に加え,显示またはを使用して,問題を解く前に問題定義を確認することができます。既定のソルバーまたはオプションの変更で説明されているように,optimoptionsを使用して解决のオプションを設定します。

警告

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

多項式を使用した基本的な方程式の解法の例については,非線形多項式系の解法,問題ベースを参照してください。一般的な非線形の例については,非線形方程式系の解法,問題ベースを参照してください。より広範囲な例については,非線形方程式系を参照してください。

参考

||||||

関連するトピック