Вот более полный код, для N=3 эквивалентен вышеприведеному, за исключением посленей части:
CODE
for (int k = 0; k < N; k++)
{
a1[0] = 1.0; a1[1] = a1[2] = a1[3] = 0.0;
for (int j = 0; j < N; j++)
{
if (j == k)
continue;
a1_old = 0.0;
for (int i = 0; i < N+1; i++)
{
t = a1[i] * a[j] + a1_old * b[j];
a1_old = a1[i];
a1[i] = t;
}
}
for (int i = 0; i < N+1; i++)
a0[i] += a1[i];
}
a1_old = 0.0;
for (int i = 0; i < N+1; i++)
{
t = a1[i] * a[N-2] + a1_old * b[N-1];
a1_old = a1[i];
a1[i] = t;
}
Это кусок мат. модели, векторы a и b вычисляются из физических параметров системы.
После этого из массивов а0 и a1 формируются коэфициенты полинома (комплексные):
CODE
for (int i = 0; i < N+1; i++)
{
c[i].real= t0 * a1[i];
c[i].imag = t1 * a1[i];
if (i > 0)
c[i].imag -= a0[i-1];
}
t0 и t1 - тоже вычисляются из параметров, представляют собой выражения вида t0 = A * sin(W), t1 = A * cos(W).
После этого находятся корни полинома, и они используются дальше в модели.
Сообщение отредактировал Taradov Alexander - Oct 10 2011, 12:14