メインコンテンツ

collect

同じべき乗で係数をまとめる

説明

C = collect(P) は、シンボリック入力 P における既定の変数の同じべき乗で係数をまとめます。P の既定の変数は symvar によって決定されます。

C = collect(P,expr) は、指定された式について同じべき乗で係数をまとめます。P がベクトルまたは行列の場合、collectP の要素ごとに働きます。expr がベクトルの場合、collectexpr のすべての式について係数を求めます。

すべて折りたたむ

シンボリック式における既定の変数の同じべき乗で係数をまとめます。ここでは、collectx^2x の係数をまとめることで、式を x についての多項式として返します。

syms x
P = (exp(x) + x)*(x + 2)
P = x+exx+2
C = collect(P)
C = x2+ex+2x+2ex

変数を指定していないため、collect では symvar によって決まる既定の変数が使用されます。この式では、既定の変数は x です。

defaultvar = symvar(P)
defaultvar = x

変数を collect の 2 番目の引数として指定して、シンボリック式における指定した変数の同じべき乗で係数をまとめます。

変数 x および y についてのシンボリック式を作成します。

syms x y
P = x^2*y + y*x - x^2 - 2*x
P = xy-2x+x2y-x2

x の同じべき乗で係数をまとめます。ここでは、collectx^2x の係数をまとめることで、式を x についての多項式として返します。

Cx = collect(P,x)
Cx = y-1x2+y-2x

y の同じべき乗で係数をまとめます。ここでは、collecty の係数をまとめることで、式を y についての多項式として返します。

Cy = collect(P,y)
Cy = x2+xy-x2-2x

2 番目の引数を変数のベクトルとして指定して、複数の変数で係数をまとめることもできます。変数 x および y についての別のシンボリック式を作成します。次に、xy の同じべき乗で係数をまとめます。ここでは、collectx^2x*y の係数をまとめることで、式を 2 つの変数 x および y についての多項式として返します。

syms a b
Q = a^2*x*y + a*b*x^2 + a*x*y + x^2
Q = ya2x+bax2+yax+x2
Cxy = collect(Q,[x y])
Cxy = ab+1x2+a2+axy

i でシンボリック式の係数をまとめ、次に pi でまとめます。

syms x y
P = y*pi*(pi - 1i) + x*(pi + 1i) + 3*pi
P = 3π+xπ+i+πyπ-i
Ci = collect(P,1i)
Ci = x-πyi+3π+πx+yπ2
Cpi = collect(P,pi)
Cpi = yπ2+x+3-yiπ+xi

collect の 2 番目の引数として、係数をまとめる対象となるシンボリック式またはシンボリック関数を指定できます。

expand を使用して式 sin(x + 3*y) を展開します。次に、sin(x) で係数をまとめます。

syms x y
P = expand(sin(x + 3*y))
P = 4sin(x)cos(y)3+4cos(x)sin(y)cos(y)2-3sin(x)cos(y)-cos(x)sin(y)
C = collect(P,sin(x))
C = 4cos(y)3-3cos(y)sin(x)+4cos(x)cos(y)2sin(y)-cos(x)sin(y)

ベクトル入力を指定して、sin(x)sin(y) の両方で係数をまとめます。

Cxy = collect(P,[sin(x) sin(y)])
Cxy = 4cos(y)3-3cos(y)sin(x)+4cos(x)cos(y)2-cos(x)sin(y)

シンボリック式のシンボリック関数 y(x) で係数をまとめることもできます。

syms y(x)
P = y^2*x + y*x^2 + y*sin(x) + x*y
P(x) = xy(x)2+x2y(x)+sin(x)y(x)+xy(x)
Cy = collect(P,y)
Cy(x) = xy(x)2+x+sin(x)+x2y(x)

シンボリック入力の行列を指定すると、collect は行列の要素ごとに働きます。

syms x y
P = [(x + 1)*(y + 1), x^2 + x*(x -y);
     2*x*y - x, x*y + x/y]
P = 

(x+1y+1xx-y+x22xy-xxy+xy)

C = collect(P,x)
C = 

(y+1x+y+12x2+-yx2y-1xy+1yx)

2 番目の引数で関数名を string スカラーとして指定して、特定の関数に対する呼び出しで係数をまとめます。複数の関数を string 配列として指定して、複数の関数について関数呼び出しの係数をまとめます。

Psin 関数に対する呼び出しで係数をまとめます。ここで、P はさまざまな関数に対する複数の呼び出しを含むシンボリック式です。

syms a b c d e f x
P = a*sin(2*x) + b*sin(2*x) + c*cos(x) + ...
    d*cos(x) + e*sin(3*x) + f*sin(3*x)
P = asin(2x)+bsin(2x)+esin(3x)+fsin(3x)+ccos(x)+dcos(x)
C1 = collect(P,"sin")
C1 = a+bsin(2x)+e+fsin(3x)+ccos(x)+dcos(x)

Psin 関数と cos 関数の両方に対する呼び出しで係数をまとめます。

C2 = collect(P,["sin" "cos"])
C2 = a+bsin(2x)+e+fsin(3x)+c+dcos(x)

x および y についてのシンボリック式を作成します。

syms x y
P = -12/((x - 2)*(x + 2)) + 8/(y + 2)
P = 

8y+2-12x-2x+2

シンボリック式 P における x の同じべき乗で係数をまとめ、次に y の同じべき乗で係数をまとめます。ここでは、collect 関数は有理関数を 2 つの多項式の除算の形式で返します。分子と分母で個別に、正の整数乗をもつ同じ項で係数をまとめます。

Cx = collect(P,x)
Cx = 

8x2-12y-56y+2x2-4y-8

Cy = collect(P,y)
Cy = 

-12y+8x2-56x2-4y+2x2-8

不定元に正の整数乗をもつ 2 つの多項式の除算である有理関数として式を表現できない場合、collect は同じべき乗で係数をまとめない可能性があります。

たとえば、x の平方根を含むシンボリック式を作成します。ここでは、collectx の同じべき乗をまとめません。

Q = -12/(sqrt(x)*(x + 2)) + 8/(y + 2)
Q = 

8y+2-12xx+2

C = collect(Q,x)
C = 

16x-12y+8x3/2-242xy+x3/2y+4x+2x3/2

入力引数

すべて折りたたむ

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

係数をまとめる対象となる式。シンボリック数、シンボリック変数、シンボリック式、シンボリック関数、シンボリック ベクトル、string 配列、文字ベクトル、または文字ベクトルの cell 配列として指定します。

例: sin(x)

例: [sin(x) cos(y)]

例: ["sin" "cos"]

ヒント

  • collect は、(入力式と出力式の見た目が同じであるとしても) 入力式と構文的に異なる出力を返します。このため、isequal のような関数が等価性をチェックするときに true が返されないことがあります。入力式と出力式の間の等価性を証明するには、代わりに isAlways を使用します。

バージョン履歴

R2006a より前に導入