Main Content

combine

同じ代数的構造の項の結合

説明

Y = combine(S) は、式 S 内のべき乗の積を単一のべき乗に書き換えます。

Y = combine(S,T) は、式 S 内のターゲット関数 T の複数回の呼び出しを集約します。expand の逆の機能を、その適用されたルールの大部分について実装するため combine を使用します。

Y = combine(___,'IgnoreAnalyticConstraints',true) は、log(a) + log(b) = log(a*b) のような一般的な数学的恒等を適用して出力を単純化します。これらの恒等式は変数の一部の値に対して有効ではない場合がありますが、適用すると単純化された結果を返すことができます。

同じ基底のべき乗

同じ基底のべき乗を結合します。

syms x y z
combine(x^y*x^z)
ans =
x^(y + z)

数値引数のべき乗を結合します。MATLAB® が式の値を求めるのを避けるために、sym を使用して、少なくとも 1 つの数値引数をシンボリック値に変換します。

syms x y
combine(x^(3)*x^y*x^exp(sym(1)))
ans =
x^(y + exp(1) + 3)

ここでは、MATLAB が式 e1 の値を求めないように、sym1 をシンボリック値に変換します。

同じ指数のべき乗

同じ指数をもつべき乗を結合する場合があります。

combine(sqrt(sym(2))*sqrt(3))
ans =
6^(1/2)

combine は通常、べき乗を結合しません。これは内部の単純化関数が同じルールを逆方向に適用して、計算結果を展開するためです。

syms x y 
combine(y^5*x^5)
ans =
x^5*y^5

対数を含む項

ターゲット引数を log に指定して、項と対数を結合します。正の実数では、積の対数は、その係数の対数の和と等しくなります。

S = log(sym(2)) + log(sym(3));
combine(S,'log')
ans =
log(6)

log(a) + log(b) を結合してみます。既定では、ab は複素数であると仮定されているため、規則は成立せず、combine は項を結合しません。

syms a b
S = log(a) + log(b);
combine(S,'log')
ans =
log(a) + log(b)

ab が規則の条件を満足するように仮定を設定することによって、規則を適用します。

assume(a > 0)
assume(b > 0)
S = log(a) + log(b);
combine(S,'log')
ans =
log(a*b)

計算を続けるため、変数 a と b に設定された仮定を syms を使用して再作成することで消去します。

syms a b

または、'IgnoreAnalyticConstraints' を使用して、解析制約を無視して規則を適用します。

syms a b
S = log(a) + log(b);
combine(S,'log','IgnoreAnalyticConstraints',true)
ans =
 log(a*b)

正弦関数および余弦関数呼び出しを含む項

ターゲット引数を sincos に設定し、正弦関数および余弦関数の積を関数の和として書き換えます。

syms a b
combine(sin(a)*cos(b) + sin(b)^2,'sincos')
ans =
sin(a + b)/2 - cos(2*b)/2 + sin(a - b)/2 + 1/2

ターゲット引数を sincos に設定し、正弦関数および余弦関数の和を書き換えます。

combine(cos(a) + sin(a),'sincos')
ans =
2^(1/2)*cos(a - pi/4)

ターゲット引数を sincos に設定し、余弦二乗関数を書き換えます。

combine(cos(a)^2,'sincos')
ans =
cos(2*a)/2 + 1/2

combine は、負の整数の指数をもつ、正弦関数および余弦関数のべき乗を書き換えません。

syms a b
combine(sin(b)^(-2)*cos(b)^(-2),'sincos')
ans =
1/(cos(b)^2*sin(b)^2)

指数項

ターゲット引数を exp に指定して、項と指数を結合します。

combine(exp(sym(3))*exp(sym(2)),'exp')
ans =
exp(5)
syms a
combine(exp(a)^3, 'exp')
ans =
exp(3*a)

積分を含む項

ターゲット引数を int に指定して、積分を含む項を結合します。

syms a f(x) g(x)
combine(int(f(x),x)+int(g(x),x),'int')
combine(a*int(f(x),x),'int')
ans =
int(f(x) + g(x), x)
ans =
int(a*f(x), x)

同じ極限をもつ積分を結合します。

syms a b h(z)
combine(int(f(x),x,a,b)+int(h(z),z,a,b),'int')
ans =
int(f(x) + h(x), x, a, b)

逆正接関数呼び出しを含む項

ターゲット引数を atan に指定して、逆正接関数の 2 つの呼び出しを結合します。

syms a b
assume(-1 < a < 1)
assume(-1 < b < 1)
combine(atan(a) + atan(b),'atan')
ans =
-atan((a + b)/(a*b - 1))

逆正接関数に 2 つの呼び出しを結合します。可能な場合、combine は式をシンボリック値に単純化します。

assume(a > 0)
combine(atan(a) + atan(1/a),'atan')
ans =
pi/2

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

syms a b

ガンマ関数の呼び出しを含む項

ターゲットを gamma に指定して、複数のガンマ関数を結合します。

syms x
combine(gamma(x)*gamma(1-x),'gamma')
ans =
 -pi/sin(pi*(x - 1))

combine は、ガンマ関数の商を有理数の式に単純化します。

1 つの呼び出し内の複数入力式

シンボリック行列を入力パラメーターとして使用して、1 つの関数呼び出しで複数の式の値を求めます。

S = [sqrt(sym(2))*sqrt(5), sqrt(2)*sqrt(sym(11))];
combine(S)
ans =
[ 10^(1/2), 22^(1/2)]

入力引数

すべて折りたたむ

入力する式。シンボリック式または関数、あるいはシンボリック式や関数のベクトルまたは行列として指定します。

combine は、S の部分式に再帰的に適用されます。

S がシンボリック行列の場合、combine は行列のすべての要素に適用されます。

ターゲット関数。'atan''exp''gamma''int''log''sincos'、または 'sinhcosh' として指定します。書き換えの規則は、ターゲット関数の呼び出しにのみ適用されます。

出力引数

すべて折りたたむ

シンボリック変数、シンボリックな数、シンボリック式、あるいはシンボリック変数、シンボリックな数またはシンボリック式のベクトルまたは行列として返され、結合される関数をもつ式。

アルゴリズム

combine は、ターゲット引数 T の値に応じて、以下の書き換え規則を入力式 S に適用します。

  • T = 'exp' の場合、combine は、有効な場合、これらの書き換え規則を適用します。

    eaeb=ea+b

    (ea)b=eab.

  • T = 'log' の場合、

    log(a)+log(b)=log(ab).

    b < 1000 の場合、

    blog(a)=log(ab).

    b >= 1000 のとき、combine はこの 2 番目の規則を適用しません。

    対数書き換えの規則は、任意の複素数値 ab には適用されません。これらの書き換え規則を有効にするためには、a または b の適切なプロパティを指定します。

  • T = 'int' の場合、

    af(x)dx=af(x)dx

    f(x)dx+g(x)dx=f(x)+g(x)dx

    abf(x)dx+abg(x)dx=abf(x)+g(x)dx

    abf(x)dx+abg(y)dy=abf(y)+g(y)dy

    abyf(x)dx+abxg(y)dy=abyf(c)+xg(c)dc.

  • T = 'sincos' の場合、

    sin(x)sin(y)=cos(xy)2cos(x+y)2.

    combine は、sin(x)cos(y) および cos(x)cos(y) に同様の規則を適用します。

    Acos(x)+Bsin(x)=A1+B2A2cos(x+tan1(BA)).

  • T = 'atan' および -1 < x < 1-1 < y < 1 の場合、

    atan(x)+atan(y)=atan(x+y1xy).

  • T = 'sinhcosh' の場合、

    sinh(x)sinh(y)=cosh(x+y)2cosh(xy)2.

    combine は、sinh(x)cosh(y) および cosh(x)cosh(y) に同様の規則を適用します。

    combine は、正の積分指数をもつ sinhcosh のべき乗に上記の規則を再帰的に適用します。

  • T = 'gamma' の場合、

    aΓ(a)=Γ(a+1).

    かつ

    Γ(a+1)Γ(a)=a.

    正の整数 n に対しては

    Γ(a)Γ(a)=πsin(πa).

バージョン履歴

R2014a で導入