Main Content

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

symmatrix

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

説明

X = symmatrix('X',[nrow ncol]) は、nrowncol 列のシンボリック行列変数 X を作成します。シンボリック行列変数は、行列、ベクトル、およびスカラーをコンパクトな行列表記で表現します。詳細については、シンボリック行列変数の作成を参照してください。

X = symmatrix('X',n) は、nn 列のシンボリック行列変数 X を作成します。

X = symmatrix('X') は、1 行 1 列のシンボリック行列変数 X を作成します。

X = symmatrix(S) は、S で指定される数値行列またはシンボリック スカラー変数の行列をシンボリック行列変数 X に変換します。

すべて折りたたむ

サイズが 23 列の 2 つのシンボリック行列変数を作成します。非スカラーのシンボリック行列変数は、ライブ エディターおよびコマンド ウィンドウにおいて太字で表示されます。

A = symmatrix('A',[2 3])
A = Asymmatrix('A', [2 3])
B = symmatrix('B',[2 3])
B = Bsymmatrix('B', [2 3])

2 つの行列を加算します。2 つのシンボリック行列変数の総和は、行列表記 A+B で表現されます。

X = A + B
X = A+Bsymmatrix('A', [2 3]) + symmatrix('B', [2 3])

シンボリック行列変数は、行列、ベクトル、およびスカラーをコンパクトな行列表記で表現します。非スカラーを表現する場合、これらの変数は非可換です。数式が行列およびベクトルを含む場合、シンボリック行列変数を使用してそれらを記述すると、成分ごとに記述するより簡潔で明確になります。

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

A = symmatrix('A',[2 2]);
B = symmatrix('B',[2 2]);

2 つのシンボリック行列変数の乗算について、交換関係をチェックします。

A*B - B*A
ans = AB-BAsymmatrix('A', [2 2])*symmatrix('B', [2 2]) - symmatrix('B', [2 2])*symmatrix('A', [2 2])
isequal(A*B,B*A)
ans = logical
   0

2 つのシンボリック行列変数の加算について、交換関係をチェックします。

isequal(A+B,B+A)
ans = logical
   1

33 列および 31 列のシンボリック行列変数を作成します。

A = symmatrix('A',3)
A = Asymmatrix('A', [3 3])
X = symmatrix('X',[3 1])
X = Xsymmatrix('X', [3 1])

XTAX のヘッセ行列を求めます。シンボリック行列変数を含む導出された方程式は、教科書で示されるように、整形されて表示されます。

f = X.'*A*X;
H = diff(f,X,X.')
H = AT+Atranspose(symmatrix('A', [3 3])) + symmatrix('A', [3 3])

次数 4 のヒルベルト行列を作成します。行列のデータ型は double です。

H = hilb(4)
H = 4×4

    1.0000    0.5000    0.3333    0.2500
    0.5000    0.3333    0.2500    0.2000
    0.3333    0.2500    0.2000    0.1667
    0.2500    0.2000    0.1667    0.1429

class(H)
ans = 
'double'

数値行列をシンボリック行列変数に変換します。変換された行列のデータ型は symmatrix です。

X = symmatrix(H)
X = 

(1121314121314151314151614151617)[sym(1), sym(1/2), sym(1/3), sym(1/4); sym(1/2), sym(1/3), sym(1/4), sym(1/5); sym(1/3), sym(1/4), sym(1/5), sym(1/6); sym(1/4), sym(1/5), sym(1/6), sym(1/7)]

class(X)
ans = 
'symmatrix'

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

A = symmatrix('A',2)
A = Asymmatrix('A', [2 2])
B = symmatrix('B',2)
B = Bsymmatrix('B', [2 2])

AB の行列乗算を実行します。2 つのシンボリック行列変数の乗算は、行列表記 AB で表現されます。

X = A*B
X = ABsymmatrix('A', [2 2])*symmatrix('B', [2 2])

シンボリック行列変数 X をシンボリック スカラー変数の行列 S に変換します。シンボリック スカラー変数の 2 つの行列の乗算は、行列積の要素で表現されます。

S = symmatrix2sym(X)
S = 

(A1,1B1,1+A1,2B2,1A1,1B1,2+A1,2B2,2A2,1B1,1+A2,2B2,1A2,1B1,2+A2,2B2,2)[A1_1*B1_1 + A1_2*B2_1, A1_1*B1_2 + A1_2*B2_2; A2_1*B1_1 + A2_2*B2_1, A2_1*B1_2 + A2_2*B2_2]

入力引数

すべて折りたたむ

変数名。文字ベクトルとして指定します。引数 X は、有効な変数名でなければなりません。つまり、X の先頭は文字で、英数字とアンダースコアのみが使用されていなければなりません。変数名が有効であるかどうかを検証するには isvarname を使用します。

例: x, y12, z_1

ベクトルまたは行列の次元。整数のベクトルとして指定します。nrow は行数であり、ncol は列数です。ショートカットとして、整数を 1 つだけ指定してシンボリック正方行列変数を作成することもできます。たとえば、X = symmatrix('X',3)33 列のシンボリック正方行列変数を作成します。

例: [2 3], [2,3]

シンボリック行列変数に変換される数値行列またはシンボリック スカラー変数の行列。数値、数値行列、シンボリック スカラー変数、またはシンボリック スカラー変数の行列として指定します。

例: 10, eye(3), pi, hilb(3)

制限

  • Symbolic Math Toolbox™ を使用すると、シンボリック スカラー変数に依存するシンボリック関数をパラメーターとして作成できます。ただし、シンボリック行列変数をパラメーター依存にすることはできません。たとえば、現在のところ、コマンド symmatrix('A(x)',[3 2]) はエラーになります。

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

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

代替可能な機能

シンボリック行列変数のその他の作成方法

複数のシンボリック行列変数を 1 回の関数呼び出しで作成するには、syms var1 ... varN [nrow ncol] matrix を使用します。詳細については、syms を参照してください。

R2021a で導入