関数 syms
または sym
の選択
Symbolic Math Toolbox™ では、syms
または sym
のいずれかを使用してシンボリック オブジェクトを宣言できます。これらの 2 つの関数は概念的に異なります。
関数
syms
は同じ名前で MATLAB® 変数に自動的に代入されるシンボリック オブジェクトを "作成" します。関数
sym
は同じ名前または異なる名前で MATLAB 変数に代入できるシンボリック オブジェクトを "参照" します。
シンボリック変数の MATLAB 変数への代入
関数 syms
は変数を動的に "作成" します。たとえば、コマンド syms x
はシンボリック変数 x
を作成し、それを自動的に同じ名前で MATLAB 変数に代入します。
syms x
x
x =
関数 sym
は異なる名前で MATLAB 変数に代入できるシンボリック変数を "参照" します。たとえば、コマンド f1 = sym('x')
はシンボリック変数 x
を参照し、それを MATLAB 変数 f1
に代入します。
f1 = sym('x')
f1 =
シンボリック数の作成
関数 syms
を使用してシンボリック変数 x
を "作成" し、それを自動的に MATLAB 変数 x
に代入します。数値を MATLAB 変数 x
に代入すると、その数値は倍精度で表されます。シンボリック変数への前回の代入は、今回の代入で上書きされます。x
のクラスは double
になります。
syms x
x = 1/33
x = 0.0303
class(x)
ans = 'double'
関数 sym
を使用して、浮動小数点を近似せずに正確なシンボリック数を "参照" します。その後、この数値を MATLAB 変数 x
に代入できます。x
のクラスは sym
です。
x = sym('1/33')
x =
class(x)
ans = 'sym'
仮定によるシンボリック変数の作成
仮定を使用してシンボリック変数を作成すると、MATLAB はシンボリック変数とその仮定を別々に格納します。
関数 syms
を使用して MATLAB 変数に同じ名前で代入されるシンボリック変数を "作成" します。仮定なしで新しいシンボリック変数を取得します。syms
を使用して変数を宣言する場合、既存の仮定が消去されます。
syms x positive syms x assumptions
ans = Empty sym: 1-by-0
sym
を使用して既存のシンボリック変数を "参照" します。このシンボリック変数が MATLAB セッションで前に使用された場合、sym
はシンボリック変数とその現在の仮定を参照します。前に使用されなかった場合、sym
は仮定なしでシンボリック変数を作成します。
syms x positive x = sym('x'); assumptions
ans =
多数のシンボリック変数の作成
多数のシンボリック変数を同時に "作成" するには、関数 syms
を使用する方が便利です。1 行のコードで複数の変数を作成できます。
syms a b c
sym
を使用する場合、MATLAB 変数を 1 つずつ宣言し、対応するシンボリック変数をそれらに "参照" させなければなりません。
a = sym('a'); b = sym('b'); c = sym('c');
シンボリック変数の配列の作成
シンボリック変数をその要素として含むシンボリック配列を宣言する場合、syms
または sym
のいずれかを使用できます。
コマンド syms a [1 3]
は、ワークスペースで 1 行 3 列のシンボリック配列 a
と、シンボリック変数 a1
、a2
および a3
を "作成" します。シンボリック変数 a1
、a2
および a3
は自動的にシンボリック配列 a
に代入されます。
clear syms a [1 3] a
a =
whos
Name Size Bytes Class Attributes a 1x3 8 sym a1 1x1 8 sym a2 1x1 8 sym a3 1x1 8 sym
コマンド a = sym('a',[1 3])
は、ワークスペースでシンボリック配列 a
に代入されるシンボリック変数 a1
、a2
および a3
を "参照" します。要素 a1
、a2
、および a3
はワークスペースで作成されません。
clear
a = sym('a',[1 3])
a =
whos
Name Size Bytes Class Attributes a 1x3 8 sym
入れ子関数内のシンボリック変数
入れ子関数内でシンボリック変数を宣言するには、sym
を使用します。たとえば、親関数ワークスペースで MATLAB 変数 x
を明示的に定義し、x
に同じ名前のシンボリック変数を参照させることができます。
function primaryFx x = sym('x') function nestedFx ... end end
入れ子関数ではワークスペースが静的になるため、syms
を使用して動的に変数を追加することはできません。