2

タイプの行列多項式乗算を実行しようとしています:

(A_1+A_2*y)*(B_1+B_2*y+B_3*y^2)

ここyで、 は変数で、すべてA_iが同じサイズの定数行列であり、すべてが同じサイズのB_i定数行列であり、形式の行列乗算はA_i*B_i理にかなっています。行列A_iB_iは既知であり、ユーザーによって指定されます。

正式には、乗算の結果は になるはずでC_1+C_2*y+C_3*y^2+C_4*y^3あり、 を知りたいC_iです。MATLAB では、A_iB_iがスカラーの場合、'conv' を使用できます。ただし、それらがスカラーでない場合、問題はそれほど簡単ではありません。MATLAB で行列を使用してこれを行う簡単な方法 (「conv」に類似) があるかどうかA_iB_i知りたいです。C_iもちろん、私はこれを一般的な意味 (任意の次数の一変量行列多項式) で使用したいと考えており、シンボリック ツールボックスの使用は避けたいと考えています。

4

2 に答える 2

0

ファイル交換で見つかった私のsympolyツールボックスを使用して、十分に簡単です。(これがシンボリック TB を回避するという事実は、私自身のシンポリ TB を使用している間、答えを無効にしますか? それを決定できるのはあなただけです。) マトリックスがかなり非創造的に構築されている例を挙げます。

sympoly y

A_1 = rand(2);
A_2 = rand(2);
B_1 = rand(2);
B_2 = rand(2);
B_3 = rand(2);

加算、乗算、および行列乗算はすべて sympoly クラスに対して定義されているため、結果はシンボリック多項式要素の 2x2 行列です。

(A_1+A_2*y)*(B_1+B_2*y+B_3*y^2)
ans =
Sympoly array has size = [2  2]

Sympoly array element [1  1]
    0.88896 + 0.88074*y + 0.87653*y^2 + 0.33102*y^3
Sympoly array element [2  1]
    0.87079 + 1.2145*y + 1.0628*y^2 + 0.69004*y^3
Sympoly array element [1  2]
    0.64143 + 0.78816*y + 0.67242*y^2 + 0.2091*y^3
Sympoly array element [2  2]
    0.64582 + 1.0162*y + 0.78167*y^2 + 0.4313*y^3
于 2013-08-14T21:57:17.697 に答える