ドキュメンテーション

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

subexpr

共通の部分式によるシンボリック式の書き換え

構文

  • [r,sigma] = subexpr(expr)
  • [r,var] = subexpr(expr,var)
  • [r,var] = subexpr(expr,'var')

説明

[r,sigma] = subexpr(expr) は、共通の部分式をシンボリック変数 sigma に代入することにより、シンボリック式 expr を共通の部分式で書き換えます。

[r,var] = subexpr(expr,var) は、シンボリック変数 var を共通の部分式に代入します。

関数 [r,var] = subexpr(expr,'var') は、関数 [r,var] = subexpr(expr,var) と等価です。

略語を使用した式の書き換え

subexpr(expr) は、式 expr の共通の部分式を求め、シンボリック変数 sigma と置き換えます。

次の方程式を解きます。解は非常に長い式になります。表示するには、solve コマンドの最後のセミコロンを削除します。

syms a b c d x
solutions = solve(a*x^3 + b*x^2 + c*x + d == 0, x);

これらの長い式には共通の部分式があります。これらの共通の部分式を省略することにより、式を短くすることができます。部分式を省略するためには、subexpr を使用します。省略に使用する変数を subexpr の 2 番目の入力引数として指定しない場合は、subexpr は変数 sigma を使用します。

[r, sigma] = subexpr(solutions)
r =
                                                                             sigma^(1/3)...
 - b/(3*a) - (- b^2/(9*a^2) + c/(3*a))/sigma^(1/3)
 (- b^2/(9*a^2) + c/(3*a))/(2*sigma^(1/3)) - sigma^(1/3)/2 - (3^(1/2)*(sigma^(1/3)...
 + (- b^2/(9*a^2) + c/(3*a))/sigma^(1/3))*i)/2 - b/(3*a)
 (- b^2/(9*a^2) + c/(3*a))/(2*sigma^(1/3)) - sigma^(1/3)/2 + (3^(1/2)*(sigma^(1/3)...
 + (- b^2/(9*a^2) + c/(3*a))/sigma^(1/3))*i)/2 - b/(3*a)
sigma =
((d/(2*a) + b^3/(27*a^3) - (b*c)/(6*a^2))^2 + (- b^2/(9*a^2) + c/(3*a))^3)^(1/2)...
 - b^3/(27*a^3) - d/(2*a) + (b*c)/(6*a^2)

省略変数のカスタム化

subexpr(expr,var) では、省略に使用する変数名を指定することができます。

次の方程式を解きます。解は非常に長い式になります。表示するには、solve コマンドの最後のセミコロンを削除します。

syms a b c d x
solutions = solve(a*x^3 + b*x^2 + c*x + d == 0, x);

syms を使用してシンボリック変数 s を作成し、結果の共通の部分式をこの変数に置き換えます。

syms s
[abbrSolutions, s] = subexpr(solutions, s)
abbrSolutions =
                                                                     s^(1/3)...
 - b/(3*a) - (- b^2/(9*a^2) + c/(3*a))/s^(1/3)
 (- b^2/(9*a^2) + c/(3*a))/(2*s^(1/3)) - s^(1/3)/2 - (3^(1/2)*(s^(1/3)...
 + (- b^2/(9*a^2) + c/(3*a))/s^(1/3))*i)/2 - b/(3*a)
 (- b^2/(9*a^2) + c/(3*a))/(2*s^(1/3)) - s^(1/3)/2 + (3^(1/2)*(s^(1/3)...
 + (- b^2/(9*a^2) + c/(3*a))/s^(1/3))*i)/2 - b/(3*a)
s =
((d/(2*a) + b^3/(27*a^3) - (b*c)/(6*a^2))^2 + (- b^2/(9*a^2) +...
 c/(3*a))^3)^(1/2) - b^3/(27*a^3) - d/(2*a) + (b*c)/(6*a^2)

代わりに、文字列 s を使用して略語変数を指定することもできます。

[abbrSolutions, s] = subexpr(solutions, 's')
abbrSolutions =
                                                                     s^(1/3)...
 - b/(3*a) - (- b^2/(9*a^2) + c/(3*a))/s^(1/3)
 (- b^2/(9*a^2) + c/(3*a))/(2*s^(1/3)) - s^(1/3)/2 - (3^(1/2)*(s^(1/3)...
 + (- b^2/(9*a^2) + c/(3*a))/s^(1/3))*i)/2 - b/(3*a)
 (- b^2/(9*a^2) + c/(3*a))/(2*s^(1/3)) - s^(1/3)/2 + (3^(1/2)*(s^(1/3)...
 + (- b^2/(9*a^2) + c/(3*a))/s^(1/3))*i)/2 - b/(3*a)
s =
((d/(2*a) + b^3/(27*a^3) - (b*c)/(6*a^2))^2 + (- b^2/(9*a^2) + c/(3*a))^3)^(1/2)...
 - b^3/(27*a^3) - d/(2*a) + (b*c)/(6*a^2)

関連する例

入力引数

すべて折りたたむ

expr — 共通の部分式を含む長い式シンボリック式 | シンボリック関数

共通の部分式を含む長い式。シンボリック式または関数として指定します。

var — 共通の部分式の代入で使用する変数文字列 | シンボリック変数

共通の部分式の代入で使用する変数。文字列またはシンボリック変数として指定します。

出力引数

すべて折りたたむ

r — 共通の部分式を略語で置き換えた式シンボリック式 | シンボリック関数

共通の部分式を略語で置き換えた式。シンボリック式または関数として返します。

var — 略語に使用される変数シンボリック変数

略語に使用される変数。シンボリック変数として返します。

参考

|

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