难个参考代码看看吧
Res[0].x = poles[0].x; Res[0].y = poles[0].y; Res[1].x = 1; Res[1].y= 0; for(count_1 = 0;count_1 < N-1;count_1++)//N个极点相乘次数 { for(count = 0;count <= count_1 + 2;count++) { if(0 == count) { Res_Save[count] = ComplexMul( Res[count] poles[count_1+1] ); } else if((count_1 + 2) == count) { Res_Save[count].x += Res[count - 1].x; Res_Save[count].y += Res[count - 1].y; } else { Res_Save[count] = ComplexMul( Res[count] poles[count_1+1] ); Res_Save[count].x += Res[count - 1].x; Res_Save[count].y += Res[count - 1].y; } } for(count = 0;count <= N;count++)//Res[i]=a(i)i越大次数越高 { Res[count].x = Res_Save[count].x; Res[count].y = Res_Save[count].y; *(a + N - count) = Res[count].x; } } *(b+N) = *(a+N);