Main Content

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

syms

シンボリック スカラー変数、シンボリック関数、シンボリック行列変数、シンボリック行列関数の作成

説明

syms var1 ... varN は、sym 型のシンボリック スカラー変数 var1 ... varN を作成します。各変数はスペースで区切ります。この構文は、var1 ... varN の以前の定義をすべて消去します。

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 の入力引数を表す sym 型のシンボリック スカラー変数 var1,...,varN を作成します。この構文は、シンボリックの仮定を含む var1,...,varN の以前の定義をすべて消去します。評価済みのシンボリック関数 f(var1,...,varN)sym 型になります。

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 および f2、シンボリック スカラー変数 x を作成します。多次元配列では、これらの要素は接頭辞 f をもち、その後に f1_3_2 のように _ を区切り記号として使用した要素のインデックスが続きます。

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

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

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

syms f(var1,...,varN) [nrow ncol] matrix は、symfunmatrix 型のシンボリック行列関数 fsym 型のシンボリック スカラー変数 var1,...,varN を作成します。評価したシンボリック関数 f(var1,...,varN)symmatrix 型になり、サイズが nrowncol 列になります。この構文は、シンボリックの仮定を含む var1,...,varN の以前の定義をすべて消去します。

syms f(var1,...,varN) [nrow ncol] matrix keepargs は、var1,...,varN の既存の定義をワークスペースに保持します。変数 var1,...,varN のいずれもワークスペースに存在しない場合、この構文はそれらを sym 型のシンボリック スカラー変数として作成します。評価されたシンボリック行列関数 f(var1,...,varN) のサイズは nrowncol 列になります。

syms f(var1,...,varN) n matrix は、シンボリック正方行列関数を作成します。評価されるシンボリック行列関数 f(var1,...,varN) のサイズは nn 列になります。この構文は、シンボリックの仮定を含む var1,...,varN の以前の定義をすべて消去します。

syms f(var1,...,varN) n matrix keepargs は、var1,...,varN の既存の定義をワークスペースに保持します。変数 var1,...,varN のいずれもワークスペースに存在しない場合、この構文はそれらを sym 型のシンボリック スカラー変数として作成します。

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

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

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

すべて折りたたむ

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

syms x y
x
x = x
y
y = y

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

syms a [1 4]
a
a = (a1a2a3a4)
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_b
p_b = (pb1pb2pb3pb4)

シンボリック スカラー変数で構成され、自動生成された要素から成る 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)

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

syms x y integer

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

syms z positive rational

仮定をチェックします。

assumptions
ans = (xZyZzQ0<z)

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

assumptions(x)
ans = xZ

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)

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+2y

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

f(1,2)
ans = 5

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

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

(xx3x2x4)

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

f(2)
ans = 

(28416)

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)

自動的に生成されたシンボリック関数を要素にもつ 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) および 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))

関数 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)

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

A(2,3)
ans = 

(4f1,2(2,3)f2,1(2,3)-1)

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

syms A B [2 3] matrix
A
A = A
B
B = B

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

X = A + B
X = A+B

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)

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)

isequal(Y,Y2)
ans = logical
   1

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

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

syms A B [2 2] matrix

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

A*B - B*A
ans = AB-BA
isequal(A*B,B*A)
ans = logical
   0

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

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

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

syms A 3 matrix
syms X [3 1] matrix

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

f = X.'*A*X
f = XTAX
H = diff(f,X,X.')
H = AT+A

関数 v(r,t)=rt を評価します。ここで、r は 1 行 3 列のベクトルであり、t はスカラーです。

r をシンボリック行列変数として、t をシンボリック スカラー変数として作成します。v(r,t) をシンボリック行列関数として作成し、rt の既存の定義をワークスペースに保持します。

syms r [1 3] matrix
syms t
syms v(r,t) [1 1] matrix keepargs

v(r,t) の式を割り当てます。

v(r,t) = norm(r)/t
v(r, t) = r2t-1

関数をベクトル値 r=(1,2,2) とスカラー値 t=3 について評価します。

vEval = v([1 2 2],3)
vEval = 

13Σ12where  Σ1=(122)

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

vSym = symmatrix2sym(vEval)
vSym = 1

関数 f(A)=A2-3A+2I を評価します。ここで、A は 2 行 2 列の行列であり、I は 2 行 2 列の単位行列です。

A をシンボリック行列変数として作成します。f(A) をシンボリック行列関数として作成し、A の既存の定義をワークスペースに保持します。

syms A 2 matrix
syms f(A) 2 matrix keepargs

f(A) の多項式を割り当てます。

f(A) = A*A - 3*A + 2*eye(2)
f(A) = 2I2-3A+A2

関数を行列値 A=[12-2-1] について評価します。

fEval = f([1 2; -2 -1])
fEval = 

-3Σ1+Σ12+2I2where  Σ1=(12-2-1)

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

fSym = symmatrix2sym(fEval)
fSym = 

(-4-662)

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 = k

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

入力引数

すべて折りたたむ

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

例: x y123 z_1

シンボリック スカラー変数のベクトル、行列、配列の次元。非負の整数のベクトルとして指定します。

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

正方行列の次元。非負のスカラー整数として指定します。たとえば、syms x 3 matrix33 列のシンボリック正方行列変数を作成します。

例: 3

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

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

例: rational

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

例: F(r,t), f(x,y)

シンボリック行列変数またはシンボリック行列関数の次元。非負の整数のベクトルとして指定します。

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

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

出力引数

すべて折りたたむ

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

制限

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

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

ヒント

  • 1 回の呼び出しで複数のシンボリック オブジェクトを作成できます。たとえば、syms f(x) g(t) y は、2 つのシンボリック関数 (f および g) と 3 つのシンボリック スカラー変数 (xty) を作成します。

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

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

  • 関数内での syms の使用は、出力割り当ての指示なく変数が生成されるため、避けてください。関数内で syms を使用すると、副作用や予期せぬ動作を引き起こす可能性があります。代わりに、関数内で sym を使用し、t = sym('t') のように左辺の出力を割り当てます。詳細については、関数 syms または sym の選択を参照してください。

  • 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 はエラーをスローします。

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

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

バージョン履歴

R2006a より前に導入

すべて展開する