Main Content

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

syms

シンボリック スカラー変数、シンボリック関数、およびシンボリック行列変数を作成する

説明

syms var1 ... varN は、sym 型のシンボリック スカラー変数 var1 ... varN を作成します。異なる変数はスペースで区切ります。R2018b 以降、syms は変数からすべての仮定を消去します。

syms var1 ... varN [n1 ... nM] は、シンボリック スカラー変数 var1 ... varN の配列を作成します。ここで、各配列のサイズは n1 x ... x nM であり、自動生成されたシンボリック スカラー変数をその要素として含みます。シンボリック スカラー変数の配列は、簡潔にシンボリック配列とも呼ばれます。たとえば、syms a [1 3] は、MATLAB® ワークスペースにシンボリック配列 a = [a1 a2 a3] およびシンボリック スカラー変数 a1a2、および a3 を作成します。多次元配列では、これらの要素は接頭辞 a をもち、その後に a1_3_2 のように _ を区切り記号として使用した要素のインデックスが続きます。

syms var1 ... varN n は、シンボリック スカラー変数で構成され、自動生成された要素が埋められる nn 列の行列を作成します。シンボリック スカラー変数の行列は、簡潔にシンボリック行列とも呼ばれます。

syms ___ set は、作成されたシンボリック スカラー変数が set に属するという仮定を設定し、その他の仮定を消去します。ここで、set が取りうる値は、realpositiveinteger または rational です。スペースを使用して複数の仮定を結合することもできます。たとえば、syms x positive rational は、正の有理数の値をもつシンボリック スカラー変数 x を作成します。

syms f(var1,...,varN) は、symfun 型のシンボリック関数 f と、f の入力引数を表すシンボリック スカラー変数 var1,...,varN を作成します。1 回の関数呼び出しで複数のシンボリック関数が作成できます。たとえば、syms f(x) g(t) は、2 つのシンボリック関数 (f および g) と 2 つのシンボリック スカラー変数 (x および t) を作成します。

syms f(var1,...,varN) [n1 ... nM] は、自動的に生成されたシンボリック関数を要素にもつ n1 x ... x nM のシンボリック配列を作成します。この構文は、f の入力引数を表すシンボリック スカラー変数 var1,...,varN も生成します。たとえば、syms f(x) [1 2] は、MATLAB ワークスペースでシンボリック配列 f(x) = [f1(x) f2(x)]、シンボリック関数 f1(x) および f2(x)、シンボリック スカラー変数 x を作成します。多次元配列では、これらの要素は接頭辞 f をもち、その後に f1_3_2 のように _ を区切り記号として使用した要素のインデックスが続きます。

syms f(var1,...,varN) n は、シンボリック関数で構成され、自動生成された要素が埋められる nn 列の行列を作成します。

syms var1 ... varN [nrow ncol] matrix は、symmatrix 型のシンボリック行列変数 var1 ... varN を作成します。ここで、各シンボリック行列変数のサイズは nrowncol 列です (R2021a 以降)。

syms var1 ... varN n matrixnn 列のシンボリック行列変数を作成します (R2021a 以降)。

syms(symArray) は、symArray に含まれるシンボリック スカラー変数とシンボリック関数を作成します。ここで、symArray はシンボリック スカラー変数のベクトル、またはシンボリック スカラー変数とシンボリック関数から成る cell 配列です。この構文を使用するのは、solvesymReadSSCVariables などの別の関数によってこの配列が返される場合に限ります。

syms は、MATLAB ワークスペース内のすべてのシンボリック スカラー変数、シンボリック関数、シンボリック配列の名前を一覧表示します。

S = syms は、すべてのシンボリック スカラー変数、シンボリック関数、およびシンボリック配列の名前の cell 配列を返します。

すべて折りたたむ

シンボリック スカラー変数 x および y を作成します。

syms x y
x
x = xx
y
y = yy

シンボリック スカラー変数で構成され、自動生成された要素 a1,,a4 から成る 1 行 4 列のベクトル a を作成します。このコマンドは、MATLAB ワークスペースでシンボリック スカラー変数 a1、...、a4 も作成します。

syms a [1 4]
a
a = (a1a2a3a4)[a1, a2, a3, a4]
whos
  Name      Size            Bytes  Class    Attributes

  a         1x4                 8  sym                
  a1        1x1                 8  sym                
  a2        1x1                 8  sym                
  a3        1x1                 8  sym                
  a4        1x1                 8  sym                

書式文字ベクトルを使用して、生成された要素の命名形式を変更できます。それぞれの変数名を一重引用符で囲み、シンボリック スカラー変数を宣言します。syms は、書式文字ベクトルの %d を要素のインデックスに置き換えて、要素名を生成します。

syms 'p_a%d' 'p_b%d' [1 4]
p_a
p_a = (pa1pa2pa3pa4)[p_a1, p_a2, p_a3, p_a4]
p_b
p_b = (pb1pb2pb3pb4)[p_b1, p_b2, p_b3, p_b4]

シンボリック スカラー変数で構成され、自動生成された要素から成る 3 行 4 列の行列を作成します。これらの要素は Ai,j の形式になり、シンボリック行列変数 A1,1,,A3,4 が生成されます。

syms A [3 4]
A
A = 

(A1,1A1,2A1,3A1,4A2,1A2,2A2,3A2,4A3,1A3,2A3,3A3,4)[A1_1, A1_2, A1_3, A1_4; A2_1, A2_2, A2_3, A2_4; A3_1, A3_2, A3_3, A3_4]

シンボリック スカラー変数 x および y を作成し、それらが整数であると仮定します。

syms x y integer

別のスカラー変数 z を作成し、それが正の有理数の値をもつと仮定します。

syms z positive rational

仮定をチェックします。

assumptions
ans = (xZyZzQ0<z)[in(x, 'integer'), in(y, 'integer'), in(z, 'rational'), 0 < z]

または、各変数の仮定をチェックします。たとえば、変数 x に設定された仮定をチェックします。

assumptions(x)
ans = xZin(x, 'integer')

xy および z の仮定を消去します。

assume([x y z],'clear')
assumptions
 
ans =
 
Empty sym: 1-by-0
 

1 行 3 列のシンボリック配列 a を作成し、その配列要素が実数値をもつと仮定します。

syms a [1 3] real
assumptions
ans = (a1Ra2Ra3R)[in(a1, 'real'), in(a2, 'real'), in(a3, 'real')]

1 つの引数と 2 つの引数をもつシンボリック関数を作成します。

syms s(t) f(x,y)

sf は、共に抽象的なシンボリック関数です。これらには割り当てられたシンボリック式が無いため、これらの関数の本体はそれぞれ s(t) および f(x,y) です。

f に次の式を指定します。

f(x,y) = x + 2*y
f(x, y) = x+2yx + 2*y

x = 1 および y = 2 の関数値を計算します。

f(1,2)
ans = 5sym(5)

シンボリック関数を作成し、シンボリック スカラー変数の行列を使用してその式を指定します。

syms x
M = [x x^3; x^2 x^4];
f(x) = M
f(x) = 

(xx3x2x4)[x, x^3; x^2, x^4]

x = 2 の関数値を計算します。

f(2)
ans = 

(28416)[sym(2), sym(8); sym(4), sym(16)]

x = [1 2 3; 4 5 6] について、この関数の値を計算します。結果は、シンボリック行列の cell 配列になります。

xVal = [1 2 3; 4 5 6];
y = f(xVal)
y=2×2 cell array
    {2x3 sym}    {2x3 sym}
    {2x3 sym}    {2x3 sym}

中かっこを使用して、cell 配列の cell の内容にアクセスします。

y{1}
ans = 

(123456)[sym(1), sym(2), sym(3); sym(4), sym(5), sym(6)]

自動的に生成されたシンボリック関数を要素にもつ 2 行 2 列のシンボリック行列を作成します。

syms f(x,y) 2
f
f(x, y) = 

(f1,1(x,y)f1,2(x,y)f2,1(x,y)f2,2(x,y))[f1_1(x, y), f1_2(x, y); f2_1(x, y), f2_2(x, y)]

シンボリック式をシンボリック関数 f1_1(x,y) および f2_2(x,y) に割り当てます。これらの関数は、ライブ エディターで f1,1(x,y) および f2,2(x,y) として表示されます。これらの式を割り当てるとき、シンボリック行列 f には初期のシンボリック関数が要素に含まれたままです。

f1_1(x,y) = 2*x;
f2_2(x,y) = x - y;
f
f(x, y) = 

(f1,1(x,y)f1,2(x,y)f2,1(x,y)f2,2(x,y))[f1_1(x, y), f1_2(x, y); f2_1(x, y), f2_2(x, y)]

関数 subs を使用して、f1_1(x,y) および f2_2(x,y) に割り当てられた式を置き換えます。

A = subs(f)
A(x, y) = 

(2xf1,2(x,y)f2,1(x,y)x-y)[2*x, f1_2(x, y); f2_1(x, y), x - y]

x = 2 および y = 3 で置き換えられた式を含む、シンボリック行列 A の値を評価します。

A(2,3)
ans = 

(4f1,2(2,3)f2,1(2,3)-1)[sym(4), f1_2(2, 3); f2_1(2, 3), -sym(1)]

R2021a 以降

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

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

2 つの行列を加算します。結果は、行列表記 A+B で表現されます。

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

X のデータ型は symmatrix です。

class(X)
ans = 
'symmatrix'

シンボリック行列変数 X をシンボリック スカラー変数の行列 Y に変換します。結果は、行列成分の和で表されます。

Y = symmatrix2sym(X)
Y = 

(A1,1+B1,1A1,2+B1,2A1,3+B1,3A2,1+B2,1A2,2+B2,2A2,3+B2,3)[A1_1 + B1_1, A1_2 + B1_2, A1_3 + B1_3; A2_1 + B2_1, A2_2 + B2_2, A2_3 + B2_3]

Y のデータ型は sym です。

class(Y)
ans = 
'sym'

Y での変換結果がシンボリック スカラー変数の 2 つの行列の和と等しいことを示します。

syms A B [2 3]
Y2 = A + B
Y2 = 

(A1,1+B1,1A1,2+B1,2A1,3+B1,3A2,1+B2,1A2,2+B2,2A2,3+B2,3)[A1_1 + B1_1, A1_2 + B1_2, A1_3 + B1_3; A2_1 + B2_1, A2_2 + B2_2, A2_3 + B2_3]

isequal(Y,Y2)
ans = logical
   1

R2021a 以降

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

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

syms A B [2 2] matrix

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

R2021a 以降

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

syms A 3 matrix
syms X [3 1] matrix

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

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

solvesymReadSSCVariables などの特定の関数は、シンボリック スカラー変数のベクトル、またはシンボリック スカラー変数とシンボリック関数から成る cell 配列を返すことができます。これらの変数や関数は MATLAB ワークスペースに自動的に表示されません。これらの変数や関数は、syms を使用してベクトルまたは cell 配列から作成します。

solve を使用して方程式 sin(x) == 1 を 解きます。解のパラメーター k は MATLAB ワークスペースに表示されません。

syms x
eqn = sin(x) == 1;
[sol,parameter,condition] = solve(eqn,x,'ReturnConditions',true);
parameter
parameter = kk

syms を使用してパラメーター k を作成します。これで、パラメーター k が MATLAB ワークスペースに表示されます。

syms(parameter)

同様に、syms を使用して、ベクトルや cell 配列に格納するシンボリック オブジェクトを作成します。たとえば、シンボリック オブジェクトの cell 配列を返す関数には、symReadSSCVariablessymReadSSCParameters などがあります。

シンボリック スカラー変数、シンボリック関数、およびシンボリック配列を作成します。

syms a f(x)
syms A [2 2]

syms を使用して、現在 MATLAB ワークスペースに存在するすべてのシンボリック スカラー変数、シンボリック関数、およびシンボリック配列のリストを表示します。

syms
Your symbolic variables are:

A     A1_1  A1_2  A2_1  A2_2  a     f     x                                   

リストを表示する代わりに、syms への出力を指定して cell 配列を返します。

S = syms
S = 8x1 cell
    {'A'   }
    {'A1_1'}
    {'A1_2'}
    {'A2_1'}
    {'A2_2'}
    {'a'   }
    {'f'   }
    {'x'   }

複数のシンボリック オブジェクトを作成します。

syms a b c f(x)

関数 syms を使用して、すべてのシンボリック オブジェクトを cell 配列として返します。関数cellfunを使用して、cell 配列 symObj 内のすべてのシンボリック オブジェクトを削除します。

symObj = syms;
cellfun(@clear,symObj)

syms を呼び出し、すべてのシンボリック オブジェクトが削除されたことをチェックします。出力が空の場合、MATLAB ワークスペースにシンボリック オブジェクトが存在しないことを意味します。

syms

入力引数

すべて折りたたむ

シンボリック スカラー変数、シンボリック行列、シンボリック配列、またはシンボリック行列変数 (R2021a 以降)。スペースで区切られた有効な変数名として指定します。各変数名は、その先頭は文字で、英数字とアンダースコアのみが使用されていなければなりません。変数名が有効であるかどうかを検証するには isvarname を使用します。

例: x y123 z_1

シンボリック スカラー変数のベクトル、行列、または配列の次元。整数のベクトルとして指定します。ショートカットとして、整数を 1 つだけ指定して正方行列を作成することもできます。たとえば、syms x 3 は、シンボリック スカラー変数で構成される 33 列の正方行列を作成します。

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

シンボリック行列変数の行列の次元。整数のベクトルとして指定します。ショートカットとして、整数を 1 つだけ指定してシンボリック正方行列変数を作成することもできます。たとえば、syms x 3 matrix33 列のシンボリック正方行列変数を作成します。

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

シンボリック スカラー変数の仮定。realpositiveinteger、または rational として指定します。

スペースを使用して複数の仮定を結合できます。たとえば、syms x positive rational は、正の有理数の値をもつシンボリック スカラー変数 x を作成します。

例: rational

入力引数をもつシンボリック関数。かっこ付きの式で指定します。関数名 f および変数名 var1...varN は有効な変数名でなければなりません。つまり、その先頭は文字で、英数字とアンダースコアのみが使用されていなければなりません。変数名が有効であるかどうかを検証するには isvarname を使用します。

例: s(t), f(x,y)

シンボリック スカラー変数またはシンボリック関数。シンボリック スカラー変数のベクトル、またはシンボリック スカラー変数とシンボリック関数から成る cell 配列として指定します。このようなベクトルまたは配列は、一般に solvesymReadSSCVariables などの別の関数の出力です。

出力引数

すべて折りたたむ

MATLAB ワークスペース内のすべてのシンボリック スカラー変数、シンボリック関数、およびシンボリック配列の名前。文字ベクトルの cell 配列として返されます。

制限

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

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

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

ヒント

  • symssym のショートカットです。このショートカットを使用すると、1 回の関数呼び出しで、複数のシンボリック スカラー変数を作成できます。また、sym を使用して、各変数を個別に作成できます。ただし、sym 使用して変数を作成した場合、作成した変数の既存の仮定は維持されます。symfun を使用して、シンボリック関数を作成することもできます。

  • 関数およびスクリプト内で、syms を使用して MATLAB 関数と同じ名前のシンボリック スカラー変数を作成しないでください。このような名前に対しては、MATLAB がシンボリック スカラー変数を作成することはなく、関数に代入された名前が保持されます。関数またはスクリプト内で、MATLAB 関数と同じ名前のシンボリック スカラー変数を作成する場合は、代わりに sym を使用します。たとえば、alpha = sym('alpha') を使用します。

  • syms では、integerrealrationalpositive、および clear は無効な変数名です。これらの名前のシンボリック スカラー変数を作成する場合は、sym を使用します。たとえば、real = sym('real') です。

  • clear x は、実数、正の数値または assumesym、または syms によって設定された何らかの仮定のような、仮定のシンボリック オブジェクトは消去しません。仮定を削除するには、次のいずれかのオプションを使用します。

    • syms xx からすべての仮定を消去します。

    • assume(x,'clear')x からすべての仮定を消去します。

    • clear all は MATLAB ワークスペースのすべてのオブジェクトを消去して、シンボリック エンジンをリセットします。

    • assumeassumeAlso では、シンボリック スカラー変数に対してさらに柔軟に仮定を設定できます。

  • 数値ベクトルまたは数値行列の 1 つ以上の要素をシンボリック数で置き換えるとき、MATLAB は、その数値を倍精度数に変換します。

    A = eye(3);
    A(1,1) = sym(pi)
    A =
        3.1416         0         0
             0    1.0000         0
             0         0    1.0000

    数値ベクトルまたは数値行列の要素を、シンボリック スカラー変数、シンボリック式、またはシンボリック関数で置き換えることはできません。これらの要素は倍精度数に変換できないためです。たとえば、syms a; A(1,1) = a はエラーをスローします。

互換性についての考慮事項

すべて展開する

R2018b での動作変更

R2018b 以降は警告

R2006a より前に導入