主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

シンボリック式の単純化

数式の単純化は明確に定義されているわけではありません。どの形式の式が最も単純かに関しては,一般的な考え方はありません。ある問題については最も単純な数式の形式が,別の問題については複雑で不適切な場合もあります。たとえば,次の2つの数式は,同じ多項式の異なる形式による表現です。

(x + 1)(x - 2)(x + 3)(x - 4)

x4x - 23.- 13 x2+ 14x + 24

1番目の形式は,この多項式の根を明確に示しています。根を扱う場合,この形式はより簡単です。2番目の形式は、多項式の係数の確認に最も適しています。たとえば、この形式は多項式の微積分に便利です。

解を求める问题に特定形式式式がな场场场适切ななな适切选択选択选択选択する选択选択ことするすることことですことですことですことですことことことですですことですことですことですことことですことことですことこと関数を選択して式を再編するを参照してください。

特定の単純化関数の他に,符号数学工具箱™では,一般的な単純化関数简化を提供します。

式に特定の形式(展開,因数分解,または特定項による表現)が必要とされない場合,简化を使用して数式を短くします。たとえば,この単純化関数を使用して,計算の最終結果についてより短い形式を求めます。

简化は,多重关节,幂关节相关数目を含む含む式,たとえば,以以のなどです。

信谊x y简化((1 - x ^ 2) / (1 - x))简化((x - 1) * (x + 1) * (x ^ 2 + x + 1) * (x ^ 2 + 1) * (x ^ 2 - x + 1) * (x ^ 4 - x ^ 2 + 1))
ans = x + 1 ans = x ^ 12  -  1

三角関数を含む式を単純化します。

简化(cos (x) ^ (2) - tan (x) ^ 2)简化(cos (x) ^ 2 - sin (x) ^ 2)
Ans = 1 Ans = cos(2*x)

指ややをます式単纯単纯ます.3番目の式は,日志(3)の代わりに日志(sym(3))を使用します。日志(3)を使用する場合,MATLAB®は倍精度で日志(3)を計算してから結果をシンボリック数に変換します。

简化(exp(x)* exp(y))简化(exp(x) -  exp(x / 2)^ 2)简化(log(x)+ log(sym(3)) -  log(3 * x)+(exp(x) -  1)/(exp(x / 2)+ 1)))
ans = exp(x + y)ans = 0 ans = exp(x / 2) -  1

特殊関数を含む式を単純化します。

简化(besselj(2, x) + besselj(0, x))
Ans = 0 Ans = (2*besselj(1, x))/x

简化を使用してシンボリック関数を単純化することもできます。

syms f(x,y)f(x,y)= exp(x)* exp(y)f =简化(f)
F (x, y) = exp(x)*exp(y)

オプションを使用した単純化

既定では,简化は厳格な単純化ルールを使用して,単純化した式が最初の式と常に数学的に等価になるようにします。たとえば,一般的に複素数値の対数は結合しません。

Syms x简化(log(x^2) + log(x))
Ans = log(x²)+ log(x)

すべてすべてのパラメーター値およびおよびすべてケースについてはははではないではない,それを使使用して简化がより短い結果を返すことができるような,追加の単純化ルールを適用できます。この方法ではIgnoreanalyticonstraints.たとえば,同じ式を。Ignoreanalyticonstraints.で単純化すると,対数が結合された結果が得られます。

简化(日志(x ^ 2) +日志(x) IgnoreAnalyticConstraints,真的)
ans日志(x) = 3 *

Ignoreanalyticonstraints.代わり,変设定ますをを设定することますをにするなますます提供のことますますにのもますます,対设定ことできでき,対设定ことできます,対设定こともでき,対设定こともでき,対设定こともたとえば,に设定するもます,并且数量の综合は一般的に复素数量には有效ではありませ。xが実数値であると仮定すると,简化Ignoreanalyticonstraints.がなくても対数を結合します。

假设(x,'real')简化(log(x ^ 2)+ log(x))
ans = log(x ^ 3)

計算を続けるため,xに設定された仮定を信谊をを使し再再再するで消去します。

信谊x

式や関数の単純化性能を向上させる他の方法として,構文简化(f,“步骤”,n)があります。ここここnは正の整数で,简化が実行するステップ数を指定します。単純化のステップ数を増やすと式をより単純化できますが,より時間がかかります。既定ではn = 1です。たとえば,次の式を作成して単純化します。結果は元の式より短くなりますが,更に単純化できます。

信谊x y = (cos (x) ^ 2 - sin (x) ^ 2) * sin (2 * x) * (exp (2 * x) - 2 * exp (x) + 1) /……(cos(2*x)^2 - sin(2*x)^2)* exp(2*x) - 1))简化(y)
ANS =(SIN(4 * x)*(exp(x) -  1))/(2 * cos(4 * x)*(exp(x)+ 1))

同じ式について単純化ステップ数を指定します。まず25ステップを使用します。

简化(y,“步骤”,25)
ans =(tan(4 * x)*(exp(x) -  1))/(2 *(exp(x)+ 1))

50ステップを使用して,式を更に単純化します。

简化(y,“步骤”,50)
ans = (tan (4 * x) *双曲正切(x / 2)) / 2

既に式や関数を単純化しているが,同じ式の他の形式が必要であるとします。これを行うために,“所有”オプションを真的に設定できます。構文简化(f,“步骤”,n,‘所有’,真的)は,同じ式のその他の等価な結果を単純化ステップで示しています。

syms x y = cos(x) + sin(x) simplify(y,'Steps',10,'All',true)
ans = 2 ^ (1/2) * sin (x +π/ 4)2 ^ (1/2)* cos (x -π/ 4)cos (x) + sin (x) 2 ^ (1/2) * ((exp (- x * 1(π* 1)/ 4)* 1 i) / 2 - (exp (x * 1 +(π* 1)/ 4)* 1 i) / 2)

等価な結果をさらに多く返すには,単純化ステップ数を25まで増やします。

简化(y,“步骤”,25岁,“所有”,真的)
ans = 2 ^ (1/2) * sin (x +π/ 4)2 ^ (1/2)* cos (x -π/ 4)cos (x) + sin (x) 2 ^ (1/2) * (2 * sin (x / 2 -π/ 8)^ 2 - 1)(2 ^ (1/2)* (exp (- x * 1 +(π* 1 i) / 4) / 2 + exp (x * 1 -(π* 1)/ 4)/ 2)2 ^ (1/2)* ((exp (- x * 1(π* 1)/ 4)* 1 i) / 2 - (exp (x * 1 +(π* 1)/ 4)* 1 i) / 2)

仮定を使用しした単纯化

普通には単純化できない式のいくつかには,特別な仮定の下ではるかに短くなるものがあります。たとえば,追加の仮定なしで次の三角関数の式を単純化すると,元の式を返します。

syms n简化(sin(2 * n * pi))
ans =罪(2 *π* n)

しかし,変数nがある整数を表す場合には,同じ三角関数の式が0に単純化します。

假设(n,'整数')简化(sin(2 * n * pi))
ans = 0

计算计算続行するよう仮定を消去消去ますます。

信谊n

分数の単純化

一般的な単純化関数简化を使用して分数を単純化することができます。しかし符号数学工具箱では特にこのタスク用に,より効率的な関数简化零件が提供されています。ステートメントsimplifyFraction (f)は,分子と分母がどちらも多項式で,最大公約数が1の分数として式fを表します。たとえば,次の式を単純化します。

syms x y simplifyFraction((x^3 - 1)/(x - 1))
Ans = x^2 + x + 1
simplifyFraction (x ^ 3 - x ^ 2 * * y - x ^ 2 + y ^ 3) / (x ^ 3 + y ^ 3))
Ans = (x^2 - 2*x*y + y^2)/(x^2 - x*y + y^2)

既定では,简化零件は返される結果の分子および分母の式を展開しません。結果の式の分子と分母を展開するには扩大オプションを使用します。比較のために,最初に扩大なしでこの分数を単純化します。

SimpleIffileFraction((1  -  exp(x)^ 4)/(1 + exp(x))^ 4)
ans = (exp (2 * x) - exp (3 * x) exp (x) + 1) / (exp (x) + 1) ^ 3

今度は扩大を設定して同じ式を単純化します。

simplifyFraction ((1 - exp (x) ^ 4) / (1 + exp (x)) ^ 4,“扩大”,真的)
ans = (exp (2 * x) - exp (3 * x) exp (x) + 1) / (3 * exp (2 * x) + exp (3 * x) + 3 * exp (x) + 1)