直接型 II から伝達関数を実装する必要があります。ここでは、直接形 II とは何かについて説明します。どの係数を含めるかを選択できます。
これまでのところ、私のコードは次のようになります。
int main(void)
{
int l, m;
l = dirii2(2); // l = -82;
//m = directii(2);
return l;
}
int dirii2(int x)
{
int y = 0; // output // 3 is constant of array size.
static int v[3] = {6,4,0};
int b[3] = {3,5,2}, a[2] = {3,6};
int q0, q1, q2;
for (int i = 0; i < 3 ; i++) {
q0 = x; // q0 = x = 2
q1 = a[2-2]*v[2-1]; // q1 = 3 * 6 = 18
q2 = a[2-1]*v[2-2]; // q2 = 6 * 4 = 24
v[2] = q0 - q1 - q2;// v(n) = x(n) - a1*v(n-1) - a2v(n-2); // v = 2 - 18 - 24 = -40
y =+ b[i]*v[2-i];// + b[1]*v[2-1]+b[2]*v[2-2];
v[0] = v[1];
v[1] = v[2];
}
return y;
}
コードを実行すると、y
不安定になっているように、結果の値が急速に増減します。
- 最初の反復
y
は になり-138
ます。 - 2回目の反復
y
は になり230
ます。 - 3回目の繰り返し
y
になり-92
ます。
コードを正しく書きましたか?