Προς το περιεχόμενο

C και μιγαδικοί αριθμοί


antonis_wrx

Προτεινόμενες αναρτήσεις

Δημοσ.

για κάποιο λόγο οι παρακάτω συναρτήσεις μου άφηνουν αμετάβλητο το φανταστικό μέρος των μιγαδικών... Έχει κανείς ιδέα γιατί;

 

complex f(complex z, double p[MAX], int va8mos)

{

int j;

int sum=0;

if (z==0+0i)

return p[0];

for (j=0; j<=va8mos; j++)

sum=sum+pow(z,j)*p[j];

return sum;

}

 

complex newton(complex (*f) (complex,double[],int), complex z, double pz[MAX], double pdz[MAX], int va8mos)

{

complex a=f(z,pz,va8mos);

complex b=f(z,pdz,va8mos-1);

if (b==0)

return 0;

return z-a/b;

}

Δημοσ.

To provlima einai stin pow. Den yparxei ylopoihsi tis pow na dexetai orismata typou complex, diladi h ekfrasi pow(z,j) me z complex den yparxei stin math.h alla oute kai stin complex.h. Apenantias stin complex.h yparxei mia alli ylopoihsh paromoia tis pow gia complex numbers alla me diaforetiko onoma. Prepei na xrisimopoihseis tin

 

cpow (double _Complex cpow (double _Complex, double _Complex) )

 

h tin

 

cpowf (float _Complex cpowf (float _Complex, float _Complex) )

 

h tin

 

cpowl (long double _Complex cpowl (long double _Complex, long double _Complex) )

 

eksartatai apo ton typo tou pragmatikou kai fantastikou merous (double, float h long double). Oles oi apopanw periexontai stin complex.h

 

paradeigma:

 

complex z = 1+2i;

complex a;

 

a = cpow(z, 2);

 

Episis mporeis na to kaneis diaforetika me ton gnwsto tropo enos loop me while, diladi:

 

complex a;

int j = 2; /* h dynami stin opoia ypswneis ton z */

int i = j - 1;

a = z;

 

while(i > 0) {

a *= z;

--i;

}

Δημοσ.

δηλαδή η αλλάγη που λες ότι χρειάζεται είναι η:

complex f(complex z, double p[MAX], int va8mos)

{

int j;

int sum=0;

if (z==0+0i)

return p[0];

for (j=0; j<=va8mos; j++)

sum=sum+cpow(z,j)*p[j];

return sum;

}

 

complex newton(complex (*f) (complex,double[],int), complex z, double pz[MAX], double pdz[MAX], int va8mos)

{

complex a=f(z,pz,va8mos);

complex b=f(z,pdz,va8mos-1);

if (b==0)

return 0;

return z-a/b;

}

 

το έκανα αλλά πάλι το ίδιο κάνει...

Δημοσ.

To provlima einai kai sti sum (sorry alla twra to proseksa)!! Den prepei na einai typou int alla complex! Afou kaneis prakseis me complex numbers kai meta tis anatheteis se int. Allakse tin kai tha doulepsei.

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...