Rădăcini Complexe

Un număr complex

    \[z = x + iy\]

se poate repezenta în limbajul C printr-un vector cu 2 elemente double unde primul element este partea reală x iar al doilea este partea imaginară y. Se consideră ecuația următoare, pentru un polinom cu coeficienți complecși:

    \[a_0z^n+a_1z^{n-1} + \cdots + a_n = 0\]

unde coeficienții

    \[a_i\]

(

    \[0\leq i \leq n\]

) sunt numere complexe.

Se citesc n și tabloul a, care, pentru a memora numerele complexe, va fi de dimensiune nx2. De asemenea, se mai citesc m și un tablou cu numere complexe, w[m][2], posibile rădăcini ale ecuației date.

Să se verifice și să se afișeze (câte un element pe linie) care dintre elementele vectorului w sunt rădăcinile ecuației.

Indicație: Se vor defini și folosi funcțiile:

void aduna(double z1[2], double z2[2], double s[2]);

adunarea a două numere complexe.

void prod(double z1[2], double z2[2], double p[2]);

înmulțirea a două numere complexe.

void powc(double z[2], int q, double zp[2]);

ridicarea unui număr complex la o putere întreagă q.

void eval(int n, double a[n+1][2], double w[2], double rez[2]);

evaluarea unui polinom cu coeficienți complecși pentru un număr complex dat w.