28.3 Products of Polynomials

Last-modified: 2025-03-08 (土) 14:56:58

28.3 多項式の積

: y = conv (a, b)
: y = conv (a, b, shape)
2 つのベクトルaとbを畳み込みます。

aとbが 2 つの多項式の係数ベクトルである場合、畳み込みは積多項式の係数ベクトルを表します。

結果のサイズは、次の値を取る オプションのshape引数によって決定されます。

shape = "full"
完全な畳み込みを返します。(デフォルト) 結果は長さが のベクトルになります 。 length (a) + length (b) - 1

shape = "same"
畳み込みの中央部分をaと同じサイズで返します。

shape = "valid"
ゼロパディングされたエッジを含まない部分のみを返します。結果のサイズは です 。 max (size (a) - size (b) + 1, 0)

See also: deconv, conv2, convn, fftconv.

: C = convn (A, B)
: C = convn (A, B, shape)
AとBの nD 畳み込みを返します。

結果のサイズは、次の値を取る オプションのshape引数によって決定されます。

shape = "full"
完全な畳み込みを返します。(デフォルト)

shape = "same"
Aと同じサイズの畳み込みの中央部分を返します。畳み込みの中央部分はインデックスから始まります 。 floor ([size(B)/2] + 1)

shape = "valid"
ゼロパディングされたエッジを含まない部分のみを返します。結果のサイズは ですmax (size (A) - size (B) + 1, 0)。

See also: conv2, conv.

: b = deconv (y, a)
: [b, r] = deconv (y, a)
2 つのベクトルを逆畳み込み (多項式除算) します。

[b, r] = deconv (y, a)となるbと rを解きます。 y = conv (a, b) + r

yとaが多項式係数ベクトルの場合、 b には多項式商の係数が含まれ、r は最低次の剰余多項式になります。

See also: conv, residue.

: C = conv2 (A, B)
: C = conv2 (v1, v2, m)
: C = conv2 (…, shape)
AとBの 2 次元畳み込みを返します。

結果のサイズは、次の値を取る オプションのshape引数によって決定されます。
shape = "full"
完全な畳み込みを返します。(デフォルト)

shape = "same"
Aと同じサイズの畳み込みの中央部分を返します。畳み込みの中央部分はインデックスから始まります 。 floor ([size(B)/2] + 1)

shape = "valid"
ゼロパディングされたエッジを含まない部分のみを返します。結果のサイズは ですmax (size (A) - size (B) + 1, 0)。

3 番目の引数が行列の場合、列方向の ベクトルv1と行方向の ベクトルv2による行列mの畳み込みを返します 。

See also: conv, convn.

: q = polygcd (b, a)
: q = polygcd (b, a, tol)
2 つの多項式の最大公約数を見つけます。

これは、すべての共通根を掛け合わせて得られる多項式に相当します。deconv と組み合わせることで、2 つの多項式の比を減らすことができます。

許容値tol のデフォルトは ですsqrt (eps)。

注意:これは数値的に不安定なアルゴリズムなので、大きな多項式には使用しないでください。

コード例:

polygcd (poly (1:8), poly (3:12)) - poly (3:8)
⇒ [ 0, 0, 0, 0, 0, 0, 0 ]
deconv (poly (1:8), polygcd (poly (1:8), poly (3:12))) - poly (1:2)
⇒ [ 0, 0, 0 ]

See also: poly, roots, conv, deconv, residue.

: [r, p, k, e] = residue (b, a)
: [b, a] = residue (r, p, k)
: [b, a] = residue (r, p, k, e)
最初の呼び出し形式では、多項式bとaの商の部分分数展開を計算します。

商は次のように定義される。

B(s)    M       r(m)        N
---- = SUM ------------- + SUM k(i)*s^(N-i)
A(s)   m=1 (s-p(m))^e(m)   i=1

ここで、Mは極の数(r、p、eの長さ)、kベクトルは直接寄与を表すN-1 次多項式 、eベクトルは m 番目の留数の極の多重度を指定します。

例えば、

b = [1, 1, 1];
a = [1, -5, 8, -4];
[r, p, k, e] = residue (b, a)
  ⇒ r = [-2; 7; 3]
  ⇒ p = [2; 2; 1]
  ⇒ k = [](0x0)
  ⇒ e = [1; 2; 1]

これは次の部分分数展開を表す。

       s^2 + s + 1       -2        7        3
  ------------------- = ----- + ------- + -----
  s^3 - 5s^2 + 8s - 4   (s-2)   (s-2)^2   (s-1)

2 番目の呼び出し形式では、逆演算を実行し、部分分数展開から再構成された多項式の商b (s)/ a (s) を計算します。これは、 r、p、kで指定された留数、極、直接多項式、および極の重複度eによって表されます。

多重度eが明示的に指定されていない場合、多重度は関数 によって決定されますmpoles。

例えば:

r = [-2; 7; 3];
p = [2; 2; 1];
k = [1, 0];
[b, a] = residue (r, p, k)
  ⇒ b = [1, -5, 9, -3, 1]
  ⇒ a = [1, -5, 8, -4]

ここでmpolesはe = [1; 2; 1]を決定するために使用されます。
あるいは、多重度を明示的に定義することもできます。たとえば、

r = [7; 3; -2];
p = [2; 1; 2];
k = [1, 0];
e = [2; 1; 1];
[b, a] = residue (r, p, k, e)
  ⇒ b = [1, -5, 9, -3, 1]
  ⇒ a = [1, -5, 8, -4]

これは次の部分分数展開を表す。

 -2        7        3         s^4 - 5s^3 + 9s^2 - 3s + 1
----- + ------- + ----- + s = --------------------------
(s-2)   (s-2)^2   (s-1)          s^3 - 5s^2 + 8s - 4

See also: mpoles, poly, roots, conv, deconv.