Main Content

シンボリック行列の作成

既存のシンボリック変数の使用

循環行列は、1 つ先のステップの要素を循環して置き換えることで、1 つ前の行から各行が得られるという特性をもっています。たとえば、次のコマンドを使って、要素が abc のシンボリック循環行列を作成します。

syms a b c
A = [a b c; c a b; b c a]
A =
[ a, b, c]
[ c, a, b]
[ b, c, a]

A は循環行列なので、各行の要素の和と各列の要素の和は等しくなります。1 行目のすべての要素の和を求めます。

sum(A(1,:))
ans =
a + b + c

1 行目の要素の和と 2 列目の要素の和が等しいかどうかをチェックするには、関数 isAlways を使用します。

isAlways(sum(A(1,:)) == sum(A(:,2)))

和は等しくなります。

ans =
  logical
   1

この例から、シンボリック オブジェクトの使用が、正規の MATLAB® の数値オブジェクトを使用するのと同様に非常に簡単であることがわかります。

行列作成時の要素の生成

関数 sym を使用すると、シンボリック行列またはシンボリック ベクトルの定義を、その要素を事前に定義しなくても行うことができます。この場合、sym 関数は、シンボリック行列を作成すると同時にその要素を生成します。この関数は、生成するすべての要素を同一のフォーム、基数 (有効な変数名でなければなりません)、行インデックス、列インデックス、を使って表示します。sym の最初の引数を使って、生成される要素の名前のベースを指定します。任意の有効な変数名をベースとして使用できます。名前が有効な変数名かどうかをチェックするには、関数 isvarname を使用します。既定の設定では、sym は行インデックスと列インデックスをアンダースコアで区切ります。たとえば、要素 A1_1, ..., A2_4 の 2 行 4 列の行列 A を作成します。

A = sym('A', [2 4])
A =
[ A1_1, A1_2, A1_3, A1_4]
[ A2_1, A2_2, A2_3, A2_4]

生成される行列要素名の形式を制御するには、最初の引数内で %d を指定します。

A = sym('A%d%d', [2 4])
A =
[ A11, A12, A13, A14]
[ A21, A22, A23, A24]

シンボリック数からなる行列の作成

sym コマンドは、行列を数値型からシンボリック型に変換するために、特に有効です。次のコマンド

A = hilb(3)

は、3 行 3 列のヒルベルト行列を作成します。

A =
    1.0000    0.5000    0.3333
    0.5000    0.3333    0.2500
    0.3333    0.2500    0.2000

Asym を適用すると

A = sym(A)

上記の 3 行 3 列のヒルベルト行列の正確なシンボリック型を得ることができます。

A =
[   1, 1/2, 1/3]
[ 1/2, 1/3, 1/4]
[ 1/3, 1/4, 1/5]

数値からシンボリックへの変換の詳細は、数値のシンボリックへの変換を参照してください。

関連するトピック