Main Content

collect

説明

collect(P) は、P の既定の変数のべき乗で P 内の係数をまとめます。既定の変数は symvar で検出されます。

collect(P,expr) は、シンボリック式 expr のべき乗で P 内の係数をまとめます。P がベクトルまたは行列の場合、collectP の要素ごとに働きます。expr がベクトルの場合、collectexpr のすべての式について係数を求めます。

既定の変数のべき乗で係数をまとめる

シンボリック式の係数をまとめます。

syms x
coeffs = collect((exp(x) + x)*(x + 2))
coeffs =
x^2 + (exp(x) + 2)*x + 2*exp(x)

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

symvar((exp(x) + x)*(x + 2),1)
ans =
x

特定の変数のべき乗で係数をまとめる

特定の変数を collect の 2 番目の引数として指定して、変数の係数をまとめます。

x のべき乗で式の係数をまとめ、次に y のべき乗でまとめます。

syms x y
coeffs_x = collect(x^2*y + y*x - x^2 - 2*x,x)
coeffs_y = collect(x^2*y + y*x - x^2 - 2*x,y)
coeffs_x =
(y - 1)*x^2 + (y - 2)*x
coeffs_y =
(x^2 + x)*y - x^2 - 2*x

2 番目の引数を変数のベクトルとして指定して、xy の両方のべき乗で係数をまとめます。

syms a b
coeffs_xy = collect(a^2*x*y + a*b*x^2 + a*x*y + x^2,[x y])
coeffs_xy =
(a*b + 1)*x^2 + (a^2 + a)*x*y

ipi で係数をまとめる

i で式の係数をまとめ、次に pi でまとめます。

syms x y
coeffs_i = collect(2*x*i - 3*i*y,i)
coeffs_pi = collect(x*pi*(pi - y) + x*(pi + i) + 3*pi*y,pi)
coeffs_i =
(2*x - 3*y)*1i
coeffs_pi =
x*pi^2 + (x + 3*y - x*y)*pi + x*1i

シンボリック式とシンボリック関数の係数をまとめる

2 番目の引数を式または関数として指定して、式および関数の係数をまとめます。ベクトル入力を使用して、複数の式または関数の係数をまとめます。

sin(x + 3*y) を展開し、cos(y) の係数をまとめ、次に sin(x)sin(y) の両方の係数をまとめます。

syms x y
f = expand(sin(x + 3*y));
coeffs_cosy = collect(f,cos(y))
coeffs_cosy =
4*sin(x)*cos(y)^3 + 4*cos(x)*sin(y)*cos(y)^2 + (-3*sin(x))*cos(y) - cos(x)*sin(y)
coeffs_sinxsiny = collect(f,[sin(x) sin(y)])
coeffs_sinxsiny =
(4*cos(y)^3 - 3*cos(y))*sin(x) + (4*cos(x)*cos(y)^2 - cos(x))*sin(y)

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

syms y(x)
f = y^2*x + y*x^2 + y*sin(x) + x*y;
coeffs_y = collect(f,y)
coeffs_y(x) =
x*y(x)^2 + (x + sin(x) + x^2)*y(x)

行列の各要素の係数をまとめる

行列で collect を呼び出します。collect は行列の要素ごとに働きます。

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

関数呼び出しの係数をまとめる

関数名を 2 番目の引数として指定して、特定の関数に対する呼び出しの係数をまとめます。複数の関数を文字ベクトルの cell 配列として指定して、複数の関数について関数呼び出しの係数をまとめます。

F の関数 sin に対する呼び出しの係数をまとめます。ここで、F はさまざまな関数に対する複数の呼び出しを含みます。

syms a b c d e f x
F = a*sin(2*x) + b*sin(2*x) + c*cos(x) + d*cos(x) + e*sin(3*x) + f*sin(3*x);
collect(F,'sin')
ans =
(a + b)*sin(2*x) + (e + f)*sin(3*x) + c*cos(x) + d*cos(x)

F の関数 sincos の両方に対する呼び出しの係数をまとめます。

collect(F,{'sin' 'cos'})
ans =
(a + b)*sin(2*x) + (e + f)*sin(3*x) + (c + d)*cos(x)

入力引数

すべて折りたたむ

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

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

例: i, pi, x, sin(x), y(x), [sin(x) cos(y)], {'sin' 'cos'}.

ヒント

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

バージョン履歴

R2006a より前に導入