ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

syms

シンボリック変数とシンボリック関数の作成

説明

syms var1 ... varN はシンボリック変数 var1 ... varN を作成します。異なる変数はスペースで区切ります。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) はシンボリック関数 f と、f の入力引数を表すシンボリック変数 var1,...,varN を作成します。1 回の関数呼び出しで複数のシンボリック関数が作成できます。たとえば、syms f(x) g(t) は、2 つのシンボリック関数 (fg) および 2 つのシンボリック変数 (xt) を作成します。

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

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

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

すべて折りたたむ

シンボリック変数 xy を作成します。

syms x y

自動生成された要素 a1, ..., a4 から成る 1 行 4 列のシンボリック ベクトル a を作成します。

syms a [1 4]
a
a =
[ a1, a2, a3, a4]

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

syms 'a_%d' 'b_%d' [1 4]
a
b
a =
[ a_1, a_2, a_3, a_4]

b =
[ b_1, b_2, b_3, b_4]

シンボリック変数 x および y を作成し、整数であると仮定します。

syms x y integer

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

syms z positive rational

仮定をチェックします。

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

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

assumptions(x)
ans =
in(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 =
[ 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 + 2*y

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

f(1,2)
ans =
5

シンボリック関数を作成し、シンボリック行列を使用して式を指定します。

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

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

f(2)
ans =
[ 2,  8]
[ 4, 16]

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

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

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

y{1}
ans =
[ 1, 2, 3]
[ 4, 5, 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) および 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) =
[        2*x, f1_2(x, y)]
[ f2_1(x, y),      x - y]

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

A(2,3)
ans =
[          4, f1_2(2, 3)]
[ f2_1(2, 3),         -1]

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

方程式 sin(x) == 1solve を使用して解きます。解のパラメーター 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 =
  8×1 cell array
    {'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

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

例: [2 3][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 配列として返されます。

ヒント

  • 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 より前に導入