このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
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]
およびシンボリック スカラー変数 a1
、a2
、および a3
を作成します。多次元配列では、これらの要素は接頭辞 a
をもち、その後に a1_3_2
のように _
を区切り記号として使用した要素のインデックスが続きます。
syms
は、シンボリック スカラー変数で構成され、自動生成された要素が埋められる var1 ... varN
n
n
行 n
列の行列を作成します。
シンボリック スカラー関数
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
n
行 n
列の行列を作成します。
シンボリック行列変数
syms
は、var1 ... varN
[nrow ncol]
matrixsymmatrix
型のシンボリック行列変数 var1 ... varN
を作成します。ここで、各シンボリック行列変数のサイズは nrow
行 ncol
列です。("R2021a 以降")
syms
は var1 ... varN
n
matrixn
行 n
列のシンボリック行列変数を作成します。("R2021a 以降")
シンボリック行列関数
syms
は、f(var1,...,varN)
[nrow ncol]
matrixsymfunmatrix
型のシンボリック行列関数 f
と sym
型のシンボリック スカラー変数 var1,...,varN
を作成します。評価されたシンボリック関数 f(var1,...,varN)
は symmatrix
型になり、サイズが nrow
行 ncol
列になります。この構文は、シンボリックの仮定を含む var1,...,varN
の以前の定義をすべて消去します。("R2022a 以降")
syms
は、f(var1,...,varN)
[nrow ncol]
matrix keepargsvar1,...,varN
の既存の定義をワークスペースに保持します。変数 var1,...,varN
のいずれもワークスペースに存在しない場合、この構文はそれらを sym
型のシンボリック スカラー変数として作成します。評価されたシンボリック行列関数 f(var1,...,varN)
のサイズは nrow
行 ncol
列になります。("R2022a 以降")
syms
は、シンボリック正方行列関数を作成します。評価されたシンボリック行列関数 f(var1,...,varN)
n
matrixf(var1,...,varN)
のサイズは n
行 n
列になります。この構文は、シンボリックの仮定を含む var1,...,varN
の以前の定義をすべて消去します。("R2022a 以降")
syms
は、f(var1,...,varN)
n
matrix keepargsvar1,...,varN
の既存の定義をワークスペースに保持します。変数 var1,...,varN
のいずれもワークスペースに存在しない場合、この構文はそれらを sym
型のシンボリック スカラー変数として作成します。("R2022a 以降")
シンボリック オブジェクトの配列
例
シンボリック スカラー変数で構成され、自動生成された要素 から成る 1 行 4 列のベクトル a
を作成します。このコマンドは、MATLAB ワークスペースでシンボリック スカラー変数 a1
、...、a4
も作成します。
syms a [1 4] a
a =
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 =
p_b
p_b =
シンボリック スカラー変数で構成され、自動生成された要素から成る 3 行 4 列の行列を作成します。これらの要素は の形式になり、シンボリック行列変数 が生成されます。
syms A [3 4] A
A =
シンボリック スカラー変数 x
および y
を作成し、それらが整数であると仮定します。
syms x y integer
別のスカラー変数 z
を作成し、それが正の有理数の値をもつと仮定します。
syms z positive rational
仮定をチェックします。
assumptions
ans =
または、各変数の仮定をチェックします。たとえば、変数 x
に設定された仮定をチェックします。
assumptions(x)
ans =
x
、y
および z
の仮定を消去します。
assume([x y z],"clear")
assumptions
ans = Empty sym: 1-by-0
1 行 3 列のシンボリック配列 a
を作成し、その配列要素が実数値をもつと仮定します。
syms a [1 3] real assumptions
ans =
1 つの引数と 2 つの引数をもつシンボリック関数を作成します。
syms s(t) f(x,y)
s
と f
は、共に抽象的なシンボリック関数です。これらには割り当てられたシンボリック式が無いため、これらの関数の本体はそれぞれ s(t)
および f(x,y)
です。
f
の式を指定します。
f(x,y) = x + 2*y
f(x, y) =
点 x = 1
および y = 2
の関数値を計算します。
f(1,2)
ans =
シンボリック関数を作成し、シンボリック スカラー変数の行列を使用してその式を指定します。
syms x
M = [x x^3; x^2 x^4];
f(x) = M
f(x) =
点 x = 2
の関数値を計算します。
f(2)
ans =
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 =
自動的に生成されたシンボリック関数を要素にもつ 2 行 2 列のシンボリック行列を作成します。
syms f(x,y) 2 f
f(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) =
関数 subs
を使用して、f1_1(x,y)
および f2_2(x,y)
に割り当てられた式を置き換えます。
A = subs(f)
A(x, y) =
x = 2
および y = 3
で、置き換えられた式を含むシンボリック行列 A
の値を評価します。
A(2,3)
ans =
R2021a 以降
サイズが 2
行 3
列の 2 つのシンボリック行列変数を作成します。非スカラーのシンボリック行列変数は、ライブ エディターおよびコマンド ウィンドウにおいて太字で表示されます。
syms A B [2 3] matrix A
A =
B
B =
2 つの行列を加算します。結果は、行列表記 で表現されます。
X = A + B
X =
X
のデータ型は symmatrix
です。
class(X)
ans = 'symmatrix'
シンボリック行列変数 X
をシンボリック スカラー変数の行列 Y
に変換します。結果は、行列成分の和で表されます。
Y = symmatrix2sym(X)
Y =
Y
のデータ型は sym
です。
class(Y)
ans = 'sym'
Y
での変換結果がシンボリック スカラー変数の 2 つの行列の和と等しいことを示します。
syms A B [2 3] Y2 = A + B
Y2 =
isequal(Y,Y2)
ans = logical
1
R2021a 以降
シンボリック行列変数は、行列、ベクトル、およびスカラーをコンパクトな行列表記で表現します。非スカラーを表現する場合、これらの変数は非可換です。数式が行列およびベクトルを含む場合、シンボリック行列変数を使用してそれらを記述すると、成分ごとに記述するより簡潔で明確になります。
2 つのシンボリック行列変数を作成します。
syms A B [2 2] matrix
2 つのシンボリック行列変数の乗算について、交換関係をチェックします。
A*B - B*A
ans =
isequal(A*B,B*A)
ans = logical
0
2 つのシンボリック行列変数の加算について、交換関係をチェックします。
isequal(A+B,B+A)
ans = logical
1
R2021a 以降
3
行 3
列および 3
行 1
列のシンボリック行列変数を作成します。
syms A 3 matrix syms X [3 1] matrix
のヘッセ行列を求めます。シンボリック行列変数を含む導出された方程式は、教科書で示されるように、整形されて表示されます。
f = X.'*A*X
f =
H = diff(f,X,X.')
H =
R2022a 以降
関数 を作成します。ここで、 は 1 行 3 列のベクトルであり、 はスカラーです。
をシンボリック行列変数として、 をシンボリック スカラー変数として作成します。 をシンボリック行列関数として作成し、 と の既存の定義をワークスペースに保持します。
syms r [1 3] matrix syms t syms v(r,t) [1 1] matrix keepargs
の式を割り当てます。
v(r,t) = norm(r)/t
v(r, t) =
このシンボリック行列関数は、スカラー、ベクトル、および行列を入力引数として受け入れます。関数をベクトル値 とスカラー値 について評価します。
vEval = v([1 2 2],3)
vEval =
評価済みの関数を symmatrix
データ型から sym
データ型に変換します。
vSym = symmatrix2sym(vEval)
vSym =
solve
や symReadSSCVariables
などの特定の関数は、シンボリック スカラー変数のベクトル、またはシンボリック スカラー変数とシンボリック関数から成る 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 =
syms
を使用してパラメーター k
を作成します。これで、パラメーター k
が MATLAB ワークスペースに表示されます。
syms(parameter)
同様に、syms
を使用して、ベクトルや cell 配列に格納するシンボリック オブジェクトを作成します。たとえば、シンボリック オブジェクトの cell 配列を返す関数には、symReadSSCVariables
や symReadSSCParameters
などがあります。
シンボリック スカラー変数、シンボリック関数、シンボリック行列変数、シンボリック行列関数、およびシンボリック配列を作成します。
syms a f(x) syms A [2 1] syms B [2 2] matrix syms g(B) [2 2] matrix keepargs
syms
を使用して、現在 MATLAB ワークスペースに存在するすべてのシンボリック スカラー変数、シンボリック関数、シンボリック行列変数、シンボリック行列関数、およびシンボリック配列のリストを表示します。
syms
Your symbolic variables are: A A1 A2 B a f g x
リストを表示する代わりに、syms
への出力を指定して cell 配列を返します。
S = syms
S = 8×1 cell
{'A' }
{'A1'}
{'A2'}
{'B' }
{'a' }
{'f' }
{'g' }
{'x' }
複数のシンボリック オブジェクトを作成します。
syms a b c f(x) syms D g(y) [2 2] matrix
関数 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 matrix
は 3
行 3
列のシンボリック正方行列変数を作成します。
例: 3
シンボリック スカラー変数の仮定。real
、positive
、integer
、または rational
として指定します。
スペースを使用して複数の仮定を結合できます。たとえば、syms x positive rational
は、正の有理数の値をもつシンボリック スカラー変数 x
を作成します。
例: rational
入力引数をもつシンボリック関数またはシンボリック行列関数。かっこ付きの関数名と変数名として指定します。関数名 f
および変数名 var1...varN
は有効な変数名でなければなりません。つまり、その先頭は文字で、英数字とアンダースコアのみが使用されていなければなりません。変数名が有効であるかどうかを検証するには isvarname
を使用します。
例: F(r,t)
, f(x,y)
シンボリック行列変数またはシンボリック行列関数の次元。非負の整数のベクトルとして指定します。
例: [2 3]
, [2,3]
作成するシンボリック スカラー変数とシンボリック関数。シンボリック スカラー変数のベクトル、またはシンボリック スカラー変数とシンボリック関数から成る cell 配列として指定します。このようなベクトルまたは配列は、一般に solve
や symReadSSCVariables
などの別の関数の出力です。
出力引数
MATLAB ワークスペース内のすべてのシンボリック スカラー変数、シンボリック関数、シンボリック行列変数、シンボリック行列関数、およびシンボリック配列の名前。文字ベクトルの cell 配列として返されます。
制限
divergence
、curl
、jacobian
、およびlaplacian
などの微分関数は、現在のところ、シンボリック行列変数とシンボリック行列関数を入力として受け入れません。ベクトルおよび行列について微分を評価するには、代わりに関数diff
を使用できます。シンボリック行列変数とシンボリック行列関数を入力として受け入れる Symbolic Math Toolbox™ のすべての関数を表示するには、コマンド
methods symmatrix
とmethods symfunmatrix
を使用します。
ヒント
1 回の呼び出しで複数のシンボリック オブジェクトを作成できます。たとえば、
syms f(x) g(t) y
は、2 つのシンボリック関数 (f
およびg
) と 3 つのシンボリック スカラー変数 (x
、t
、y
) を作成します。syms
はsym
、symfun
、symmatrix
、およびsymfunmatrix
のショートカットです。このショートカットを使用すると、1 回の関数呼び出しで、複数のシンボリック オブジェクトを作成できます。たとえば、sym
を使用して、各シンボリック スカラー変数を個別に作成できます。ただし、sym
使用して変数を作成した場合、作成した変数の既存の仮定は維持されます。symfun
を使用して、シンボリック関数を作成することもできます。関数およびスクリプト内で、
syms
を使用して MATLAB 関数と同じ名前のシンボリック スカラー変数を作成しないでください。このような名前に対しては、MATLAB がシンボリック スカラー変数を作成することはなく、MATLAB 関数に代入された名前が保持されます。関数またはスクリプト内で、MATLAB 関数と同じ名前のシンボリック スカラー変数を作成する場合は、代わりにsym
を使用します。たとえば、alpha = sym("alpha")
を使用します。関数内または並列 for ループ内での
syms
の使用は、出力割り当ての指示なく変数が生成されてワークスペースのグローバルな状態が変更されるため、避けてください。関数内でsyms
を使用すると、副作用や予期せぬ動作を引き起こす可能性があります。代わりに、sym
を使用し、t = sym("t")
のように左辺の出力を割り当てます。詳細については、関数 syms または sym の選択を参照してください。syms
では、integer
、real
、rational
、positive
、およびclear
は無効な変数名です。これらの名前のシンボリック スカラー変数を作成する場合は、sym
を使用します。たとえば、real = sym("real")
のようにします。clear x
は、実数、正の数値またはassume
、sym
、またはsyms
によって設定された何らかの仮定のような、仮定のシンボリック オブジェクトは消去しません。仮定を削除するには、次のいずれかのオプションを使用します。syms x
またはsyms f(x)
はx
からすべての仮定を消去します。assume(x,"clear")
はx
からすべての仮定を消去します。clear all
は MATLAB ワークスペースのすべてのオブジェクトを消去して、シンボリック エンジンをリセットします。assume
とassumeAlso
では、シンボリック スカラー変数に対してさらに柔軟に仮定を設定できます。
数値ベクトルまたは数値行列の 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 より前に導入syms
を使用して MATLAB ワークスペース内のすべてのシンボリック オブジェクトの名前を一覧表示し、S = syms
を使用してそれらを cell 配列として返すことができます。
R2022b 以降、返されるすべてのシンボリック オブジェクトの名前には、MATLAB ワークスペースの symmatrix
型および symfunmatrix
型をもつすべてのシンボリック行列変数およびシンボリック行列関数が含まれます。以前のリリースでは、syms
は、sym
型および symfun
型をもつすべてのシンボリック スカラー変数、シンボリック関数、およびシンボリック配列の名前のみを返していました。
symfunmatrix
型のシンボリック行列関数を作成するには、以下の構文を使用します。
syms f(var1,...,varN) [nrow ncol] matrix syms f(var1,...,varN) [nrow ncol] matrix keepargs syms f(var1,...,varN) n matrix syms f(var1,...,varN) n matrix keepargs
シンボリック行列関数では、スカラー、ベクトル、および行列の演算を行うパラメーター依存関数をコンパクトな行列表記で表現できます。これらを使用することで、Symbolic Math Toolbox で行列ベースやベクトルベースの式を表現して、線形代数計算を実行できます。例については、ベクトルとスカラーの関数の作成を参照してください。
シンボリック変数を入力引数とするシンボリック関数を作成する場合、syms
は、それまでシンボリック変数に設定されていた仮定をすべて消去します。以下に例を示します。
syms x y z real syms t real positive assumptions
ans = [in(x, 'real'), in(y, 'real'), in(z, 'real'), 0 < t]
syms f(x,y,z,t)
assumptions
ans = Empty sym: 1-by-0
シンボリック関数の入力引数に仮定を設定するには、まずシンボリック関数を作成してから、シンボリック変数に仮定を設定します (または、仮定が設定されたシンボリック変数を再作成します)。以下に例を示します。
syms g(x,y,z,t) assume(x,'real') assume(t,'positive') assumptions
ans = [in(x, 'real'), 0 < t]
syms y z real assumptions
ans = [in(x, 'real'), in(y, 'real'), in(z, 'real'), 0 < t]
symmatrix
型のシンボリック行列変数を作成するには、以下の構文を使用します。
syms var1 ... varN [nrow ncol] matrix syms var1 ... varN n matrix
シンボリック行列変数は、整形された簡潔な表示で数式をより明確に示します。これらを使用することで、Symbolic Math Toolbox で行列ベースやベクトルベースの式を表現して、線形代数計算を実行できます。例については、シンボリック行列変数の交換関係およびヘッセ行列の計算を参照してください。
syms
は作成するシンボリック スカラー変数の仮定をすべて消去するようになりました。たとえば、以下のようになります。
syms x real assume(x <= 5); assumptions(x)
ans = x <= 5
syms x
assumptions(x)
ans = Empty sym: 1-by-0
消去された変数の既存の仮定を維持するには、sym
を syms
の代わりに使用して再作成します。たとえば、以下のようになります。
syms x real assume(x <= 5); clear x x = sym('x'); assumptions(x)
ans = x <= 5
構文 syms x clear
およびそれと等価な syms('x','clear')
では、将来のリリースで削除される予定であることを示す警告が表示されます。
以前のリリースでは、両構文は x
に適用されたすべての仮定を消去しました。コードを更新するには、syms
を呼び出し、消去対象の仮定があるシンボリック スカラー変数を指定します。たとえば、syms x
は x
に適用されたすべての仮定を消去します。
参考
assume
| assumeAlso
| assumptions
| displayFormula
| sym
| symfun
| symmatrix
| symfunmatrix
| symvar
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)