最適化変数および式でサポートされる演算
サポートされる演算の表記
最適化変数と最適化式は問題ベースの最適化ワークフローの基本要素です。最適化変数および式に対して有効な演算において、
xとyは任意のサイズ (通常は同じサイズ) の最適化配列を表します。x2Dおよびy2Dは 2 次元最適化配列を表します。aはスカラー数値定数です。Mは定数値行列です。cはxと同じサイズの数値配列です。
警告
問題ベースのアプローチでは、目的関数、非線形等式、および非線形不等式における複素数値はサポートされていません。関数の計算に複素数値が含まれていると、それが中間値としてであっても、最終結果が不正確になる場合があります。
最適化式を返す演算
最適化変数または式に対するこれらの演算は、最適化式を返します。
| カテゴリ | 演算 | 例 |
|---|---|---|
| 算術 | 定数の加算 | x+c または c+x |
| 変数の加算 | x+y | |
| 単項プラス | +x | |
| 定数の減算 | x-c | |
| 変数の減算 | x–y | |
| 単項マイナス | -x | |
| 定数スカラーによる乗算 | a*x または a.*x または x*a または x.*a | |
| 定数スカラーによる除算 | x/a または x./a または a\x または a.\x | |
| 配列による点単位の乗算 | c.*x または x.*c | |
| 配列による点単位の除算 | x./c または c.\x | |
| 変数の点単位の乗算 | x.*y | |
| 変数の行列乗算 | x2D*y2D、または x か y がスカラーの場合は x*y | |
| 変数および行列の行列乗算 | M*x2D または x2D*M | |
| 変数および配列のドット積 | dot(x,c) または dot(c,x) | |
| 変数の線形結合 | sum(x)、sum(x,dim) (dim はスカラーまたはベクトル)、sum(x,'all')、mean(x)、mean(x,dim) (dim はスカラーまたはベクトル)、mean(x,'all') | |
| 配列要素の積 | prod(x)、prod(x,dim)、prod(x,'all') | |
| 行列のトレース | trace(x2D) | |
| 累積和または累積積 | cumsum(x) または cumprod(x)。cumsum(x,dim)、cumsum(_,direction)、cumprod(x,dim)、cumprod(_,direction) の構文を含む | |
| 差分 | diff(x)。diff(x,n) および diff(x,n,dim) の構文を含む | |
| 連結と形状変更 | 転置 | x' または x.' |
| 連結 | cat、vertcat、horzcat | |
| 形状変更 | reshape(x,[10 1]) | |
| 対角行列の作成または行列の対角要素の取得 | diag(x2D)。構文 diag(x2D,k) を含む (x2D は行列またはベクトル) | |
| 初等関数 | 正方行列のべき乗 | x2D^a |
| 点単位のべき乗 | x.^a | |
| 平方根 | sqrt(x) | |
| ノルム (ユークリッド) | スカラーまたはベクトル fcn2optimexpr(@norm,x,Analysis="off") | |
| 正弦 | sin(x) | |
| 余弦 | cos(x) | |
| 正割 | sec(x) | |
| 余割 | csc(x) | |
| 正接 | tan(x) | |
| 余接 | cot(x) | |
| 逆正弦 | asin(x) | |
| 逆余弦 | acos(x) | |
| 逆正割 | asec(x) | |
| 逆余割 | acsc(x) | |
| 逆正接 | atan(x) | |
| 逆余接 | acot(x) | |
| 指数 | exp(x) | |
| 対数 | log(x) | |
| 双曲線正弦 | sinh(x) | |
| 双曲線余弦 | cosh(x) | |
| 双曲線正割 | sech(x) | |
| 双曲線余割 | csch(x) | |
| 双曲線正接 | tanh(x) | |
| 双曲線余接 | coth(x) | |
| 逆双曲線正弦 | asinh(x) | |
| 逆双曲線余弦 | acosh(x) | |
| 逆双曲線正割 | asech(x) | |
| 逆双曲線余割 | acsch(x) | |
| 逆双曲線正接 | atanh(x) | |
| 逆双曲線余接 | acoth(x) |
R2024a 以降では、最適化変数と最適化式で "like" 構文がサポートされます。この機能をサポートする関数のリストについては、配列作成関数に対するクラス サポートを参照してください。この構文を使用して最適化式を初期化する方法を示す例については、最適化式の初期化を参照してください。
メモ
a^x は最適化変数 x ではサポートされていません。
ただし、a が厳密に正となるよう制限している場合は、同等の exp(x*log(a)) を使用できます。
最適化変数を返す演算
最適化変数に対するこれらの演算は、最適化変数を返します。
| 演算 | 例 |
|---|---|
N 次元数値インデックス付け (コロンとend を含む) | x(3,5:end) |
| N 次元 logical インデックス付け | x(ind) (ind は logical 配列) |
| N 次元 string インデックス付け | x(str1,str2) (str1 および str2 は string) |
| N 次元混合インデックス付け (数値、logical、コロン、end、および string の結合) | x(ind,str1,:) |
線形数値インデックス付け (コロンと end を含む) | x(17:end) |
| 線形 logical インデックス付け | x(ind) |
| 線形 string インデックス付け | x(str1) |
最適化式に対する演算
最適化式は、最適化変数がサポートするすべての演算をサポートし、最適化式を返します。また、数値または線形インデックス付けに対するコロンと end 演算子を含め、数値、logical、string、または線形インデックスを使用して、最適化式にインデックス付けや割り当てを行うこともできます。
制約式を返す演算
制約は、==、<=、>= のいずれかの比較演算子を含む 2 つの "比較可能な式" です。比較可能な式は同じサイズであるか、または一方の式がスカラー、つまり、サイズが 1 行 1 列でなければなりません。例については、制約の式と方程式を参照してください。
最適化変数および式に対するドキュメント化されていない一部の演算
一部の関数と演算は、内部的に、ドキュメント化されたサポートされる演算のみを呼び出します。このような場合、関数または演算から妥当な結果を得ることができます。たとえば、現在 squeeze は内部的に reshape を呼び出します。これは、ドキュメント化されたサポートされる演算です。したがって、最適化変数に対して squeeze を実行すると、妥当な式を得ることができます。
fcn2optimexpr を必要とするサポートされていない関数および演算
目的関数または非線形制約関数がサポートされていない場合、fcn2optimexpr を使用して MATLAB® 関数を最適化式に変換します。例については、非線形関数から最適化式への変換または fcn2optimexpr の関数リファレンス ページを参照してください。
参考
OptimizationExpression | OptimizationVariable | fcn2optimexpr