ドキュメンテーション センター

  • 評価版
  • 製品アップデート

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

subs

シンボリック代入

subs(s,old,new,0) は、将来のリリースでは 0 を受け入れなくなる予定です。代わりに subs(s,old,new) を使用してください。

以前のリリースでは、subs(s,old,new)s を返す場合、subs(s,old,new,0) によって、引数 oldnew が切り替えられないようになっていました。現在では、関数 subsoldnew が切り替えられないようになりました。

構文

  • subs(s,old,new)
  • subs(s,new)
  • subs(s)

説明

subs(s,old,new) は、現れるすべての oldnew に置き換え、次に s を評価して s のコピーを返します。

subs(s,new) は、s に現れる既定の変数をすべて new に置き換え、次に s を評価して s のコピーを返します。既定の変数は symvar で定義されます。

subs(s) は、s のシンボリック変数を、呼び出し関数と MATLAB® ワークスペースから取得した値で置き換え、次に s を評価して s のコピーを返します。値が代入されていない変数は、変数のままになります。

単一置換

次の式で a4 で置き換えます。

syms a b
subs(a + b, a, 4)
ans =
b + 4

次の式で a*b5 で置き換えます。

subs(a*b^2, a*b, 5)
ans =
5*b

既定により置き換えられる値

次の式の既定値を a に置き換えます。置き換える変数または式を指定しない場合、subs は、symvar を使用して既定の変数を求めます。x + y の場合、既定の変数は x です。

syms x y a
symvar(x + y, 1)
ans =
x

したがって、subs は xa に置き換えます。

subs(x + y, a)
ans =
a + y

単一入力

次の常微分方程式を解きます。

syms a y(t)
y = dsolve(diff(y) == -a*y)
y =
C2*exp(-a*t)

次に、シンボリック パラメーター a および C2 の値を指定します。

a = 980; C2 = 3;

a および C2 は MATLAB ワークスペースに現在含まれますが、y はこれらの値を使用して評価されません。

y
y =
C2*exp(-a*t)

新しい値 a および C2 を考慮して、y を評価するには、subs を使用します。

subs(y)
ans =
3*exp(-980*t)

複数置換

古い値と新しい値をベクトルとして指定し、複数の置換を行います。

syms a b
subs(cos(a) + sin(b), [a, b], [sym('alpha'), 2])
ans =
sin(2) + cos(alpha)

また、この目的でセル配列も使用できます。

subs(cos(a) + sin(b), {a, b}, {sym('alpha'), 2})
ans =
sin(2) + cos(alpha)

スカラー拡張

次の式の変数 a を 3 行 3 列の魔方陣行列に置き換えます。定数 1 により、3 行 3 列の行列のすべての要素が 1 に拡張されることに注意してください。

syms a t
subs(exp(a*t) + 1, a, -magic(3))
ans =
[ exp(-8*t) + 1,   exp(-t) + 1, exp(-6*t) + 1]
[ exp(-3*t) + 1, exp(-5*t) + 1, exp(-7*t) + 1]
[ exp(-4*t) + 1, exp(-9*t) + 1, exp(-2*t) + 1]

複数のスカラー拡張

変数 x および y を 2 行 2 列の行列に置き換えます。ベクトルや行列の関与する複数の置換を行う場合は、セル配列を使用して古い値と新しい値を指定します。

syms x y
subs(x*y, {x, y}, {[0 1; -1 0], [1 -1; -2 1]})
ans =
[ 0, -1]
[ 2,  0]

これらの代入は要素ごとに行われることに注意してください。

[0 1; -1 0].*[1 -1; -2 1]
ans =
     0    -1
     2     0

方程式での置換

次の方程式で sin(x + 1)a で置き換えます。

syms x a
subs(sin(x + 1) + 1 == x, sin(x + 1), a)
ans =
a + 1 == x

関数での置換

次のシンボリック関数で xa で置き換えます。

syms x y a
syms f(x, y);
f(x, y) = x + y;
f = subs(f, x, a)
f(x, y) =
a + y

subs はシンボリック関数式の値を置き換えますが、関数の入力変数は置き換えません。

formula(f)
argnames(f)
ans =
a + y
 
ans =
[ x, y]

シンボリック関数の引数は明示的に置き換えることができます。

syms x y
f(x, y) = x + y;
f(x, a) = subs(f, x, a);
f
f(x, a) =
a + y

元の式

x + ys に代入します。

syms x y
s = x + y;

次の式で y を値 1 に置き換えます。この場合、s 自体は変更されません。

subs(s, y, 1); s
s =
x + y

s の値を新しい式に置き換えるには、subs で返される結果を s に代入します。

s = subs(s, y, 1); s
s =
x + 1

構造体配列

次の連立方程式の解を確認するとします。

syms x y
eqs = [x^2 + y^2 == 1, x == y];
S = solve(eqs, x, y);
S.x
S.y
ans =
  2^(1/2)/2
 -2^(1/2)/2
 
ans =
  2^(1/2)/2
 -2^(1/2)/2

返される解の正確性を検証するため、解を元の連立方程式に代入します。

logical(subs(eqs, S))
ans =
     1     1
     1     1

入力引数

すべて展開する

s - 入力シンボリック変数 | シンボリック式 | シンボリック方程式 | シンボリック関数 | シンボリック配列 | シンボリック ベクトル | シンボリック行列

シンボリック変数、シンボリック式、シンボリック方程式、シンボリック関数、シンボリック配列、シンボリック ベクトルまたはシンボリック行列として指定される入力。

old - 置き換える必要がある既存の要素シンボリック変数 | シンボリック式 | 変数または式を表す文字列 | シンボリック配列 | シンボリック ベクトル | シンボリック行列 | 文字列の配列 | 文字列のベクトル | 文字列の行列

シンボリック変数、シンボリック式、シンボリック文字列、シンボリック配列、シンボリック ベクトルまたはシンボリック行列として指定される、置き換える必要がある既存の要素。

new - 新しい要素数値 | シンボリック変数 | シンボリック式 | 変数または式を表す文字列 | シンボリック配列 | シンボリック ベクトル | シンボリック行列 | 文字列の配列 | 文字列のベクトル | 文字列の行列 | 構造体配列

数値、変数、式、文字列、配列、ベクトル、行列または構造体配列として指定される新しい要素。

詳細

すべて展開する

ヒント

  • subs(s,old,new)s を変更しません。s を変更するには、s = subs(s,old,new) を使用します。

  • oldnew がいずれも同じサイズのベクトルまたはセル配列の場合、subsold の各要素を new の対応する要素で置き換えます。

  • old がスカラーであり、new がベクトルまたは行列である場合、subs(s,old,new) はすべての演算を要素ごとに実行して、s における old のインスタンスをすべて new に置き換えます。s のすべての定数項は、すべて 1 のベクトルまたは行列にその定数をかけた項に置き換えられます。

  • s が単変量多項式で、new が数値行列の場合、polyvalm(sym2poly(s), new) を使用して行列として s を評価します。すべての定数項は、単位行列にその定数をかけた項に置き換えられます。

参考

| | | | | | | | |

関連する例

この情報は役に立ちましたか?