Main Content

symfunmatrix

シンボリック行列関数の作成

説明

f = symfunmatrix(formula,inputs) は、シンボリック行列関数 f を作成します。シンボリック式 formula は、symmatrix データ型に変換可能な関数 f の本体です。inputs 内の変数は、関数 f の入力引数であり、シンボリック スカラー変数とシンボリック行列変数から成る cell 配列でなければなりません。

f = symfunmatrix(formula,inputs,[nrow ncol]) は、inputs = {var1,var2,...} について評価したシンボリック行列関数 f(var1,var2,...) のサイズを nrowncol 列として明示的に指定します。

  • formula が抽象関数を表す場合、f(var1,var2,...) のサイズは nrowncol 列になります。以下に例を示します。

    syms x 2 matrix;
    f = symfunmatrix('g(x)',{x},[3 4]);
    size(f(x))
    ans =
         3     4

  • formula がシンボリック式または定義付きの関数を表す場合、f(var1,var2,...) のサイズは formula のサイズに従います。以下に例を示します。

    syms X Y 2 matrix;
    f = symfunmatrix(X*Y - Y*X,{X,Y},[3 3]);
    size(f(X,Y))
    ans =
         2     2

すべて折りたたむ

サイズが 22 列の 2 つのシンボリック行列変数を作成します。

syms X Y [2 2] matrix

symfunmatrix を使用して、行列演算 XY-YX を表すシンボリック行列関数を作成します。

f = symfunmatrix(X*Y - Y*X,{X,Y})
f(X, Y) = XY-YX

関数を行列値 X=[1222]Y=[-2104] について評価します。評価済みの関数は、データ型 symmatrix のシンボリック行列変数になります。

fEval = f([1 2; 2 2],[-2 1; 0 4])
fEval = 

-Σ1Σ2+Σ2Σ1where  Σ1=(-2104)  Σ2=(1222)

class(fEval)
ans = 
'symmatrix'

評価済みの関数を sym データ型に変換します。

fSym = symmatrix2sym(fEval)
fSym = 

(-211-122)

入力引数

すべて折りたたむ

関数本体。symmatrix データ型に変換可能なシンボリック式として指定するか、抽象関数として指定します。

例: X*Y.'

関数の入力引数。シンボリック スカラー変数とシンボリック行列変数から成る cell 配列として指定します。

例: {X,Y}

データ型: cell

評価済みのシンボリック行列関数の次元。非負の整数のベクトルとして指定します。ショートカットとして、整数を 1 つだけ指定してシンボリック正方行列関数を作成することもできます。

例: [2 3]

出力引数

すべて折りたたむ

シンボリック行列関数。symfunmatrix オブジェクトとして返されます。

関数 f のデータ型は symfunmatrix ですが、f([-2 3],[1 0]) のような評価済みの関数のデータ型は symmatrix になります。

制限

  • divergencecurljacobianlaplacian などの微分関数は、現在のところ、シンボリック行列関数を入力として受け入れません。ベクトルおよび行列について微分を評価するには、代わりに関数 diff を使用できます。

  • シンボリック行列関数を入力として受け入れるすべての関数を Symbolic Math Toolbox™ で表示するには、コマンド methods symfunmatrix を使用します。

ヒント

  • シンボリック行列関数を評価するときは、定義された入力引数と同じサイズの値を代入しなければなりません。例については、シンボリック行列関数の定義と評価を参照してください。比較として、以下の例はエラーを返します。

    syms X [2 2] matrix
    syms f(X) [1 1] matrix keepargs
    f(ones(4))
    

バージョン履歴

R2022a で導入