ヘルプ センターヘルプ センター
共通の部分式によるシンボリック式の書き換え
[r,sigma] = subexpr(expr)
[r,var] = subexpr(expr,'var')
[r,var] = subexpr(expr,var)
例
[r,sigma] = subexpr(expr) は、共通の部分式をシンボリック変数 sigma に代入することにより、シンボリック式 expr を共通の部分式で書き換えます。入力式 expr は変数 sigma を含むことができません。
r
expr
sigma
[r,var] = subexpr(expr,'var') は、共通の部分式に var を代入します。入力式 expr はシンボリック変数 var を含むことができません。
var
シンボリック変数 var が MATLAB® ワークスペースに既に存在している必要がある点を除いて、[r,var] = subexpr(expr,var) は [r,var] = subexpr(expr,'var') と等価です。
この構文は変数 var の値に expr の中で見つかった共通の部分式を上書きします。var の値への上書きを防ぐには、2 番目の出力引数に別の変数名を使用します。たとえば、[r,var1] = subexpr(expr,var) を使用します。
[r,var1] = subexpr(expr,var)
すべて折りたたむ
次の方程式を解きます。解は非常に長い式になります。解を表示するには、solve コマンドの最後のセミコロンを削除します。
solve
syms a b c d x solutions = solve(a*x^3 + b*x^2 + c*x + d == 0, x, 'MaxDegree', 3);
これらの長い式には共通の部分式があります。式を短くするには、subexpr を使用して共通の部分式を略記します。省略に使用する変数を subexpr の 2 番目の入力引数として指定しない場合は、subexpr は変数 sigma を使用します。
subexpr
[r, sigma] = subexpr(solutions)
r = (σ-b3 a-σ2σσ22 σ-b3 a-σ2-σ1σ22 σ-b3 a-σ2+σ1)where σ1=3 σ+σ2σ i2 σ2=c3 a-b29 a2
(σ-b3 a-σ2σσ22 σ-b3 a-σ2-σ1σ22 σ-b3 a-σ2+σ1)where σ1=3 σ+σ2σ i2 σ2=c3 a-b29 a2
sigma = d2 a+b327 a3-b c6 a22+c3 a-b29 a23-b327 a3-d2 a+b c6 a21/3
d2 a+b327 a3-b c6 a22+c3 a-b29 a23-b327 a3-d2 a+b c6 a21/3
2 次方程式を解きます。
syms a b c x solutions = solve(a*x^2 + b*x + c == 0, x)
solutions = (-b+b2-4 a c2 a-b-b2-4 a c2 a)
(-b+b2-4 a c2 a-b-b2-4 a c2 a)
syms を使用してシンボリック変数 s を作成し、結果の共通の部分式をこの変数に置き換えます。
syms
s
syms s [abbrSolutions,s] = subexpr(solutions,s)
abbrSolutions = (-b+s2 a-b-s2 a)
(-b+s2 a-b-s2 a)
s = b2-4 a c
代わりに、's' を使用して略語変数を指定することもできます。
's'
[abbrSolutions,s] = subexpr(solutions,'s')
2 つの構文は共に、変数 s 値に共通の部分式を上書きします。したがって、たとえば、s をある値と置き換えることはできません。
subs(abbrSolutions,s,0)
ans = (-b+s2 a-b-s2 a)
変数 s の値への上書きを防ぐには、2 番目の出力引数に別の変数名を使用します。
syms s [abbrSolutions,t] = subexpr(solutions,'s')
t = b2-4 a c
ans = (-b2 a-b2 a)
(-b2 a-b2 a)
共通の部分式を含む長い式。シンボリック式またはシンボリック関数として指定します。
共通の部分式の代入で使用する変数。文字ベクトルまたはシンボリック変数として指定します。
入力式 expr が既に var を含んでいる場合は、subexpr はエラーをスローします。
共通の部分式を略語で置き換えた式。シンボリック式またはシンボリック関数として返します。
略語に使用される変数。シンボリック変数として返します。
R2006a より前に導入
children | simplify | subs
children
simplify
subs
この例の変更されたバージョンがあります。編集された方の例を開きますか?
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Contact your local office