Salve a tutti ho trovato un problema che mi sta mandando in pappa, sto cercando errori simili da una buona oretta su internet ma a quanto pare nessuno ne ha scritto.
Sto scrivendo una classe che gestisca i numeri complessi e per l'esponenziale ho bisogno delle funzioni seno e coseno: questo è il codice di quel metodo
So che non ho bisogno di tutte queste variabili, le ho inserite solo perchè elevando (0+i) al quadrato la funzione non tornava -1+0i ma un risultato sbagliato, così ho distinto tutte le operazioni possibili ed ho eseguito il debug, ebbenne ho scoperto che il seno di pigreco torna 1.2!!codice:Complex Complex::exponentiation(const int &exponent) const { //c^n = norm^n *(cos(n*fi)+ i sin(n*fi) ) <- questa è la formula //this->norm() torna la norma del numero complesso //ovvero sqrt(reale^2 + img^2) double normTo_n = pow(this->norm(),exponent); double newReal = cos(exponent*this->angleRadians())*normTo_n; //double newImg = sin(exponent*this->angleRadians())*normTo_n; //<-diventava 1.22 double a = this->angleRadians(); double fi = exponent*a; double seno = sin(fi); double newImg = seno*normTo_n; double pi = (2.0*asin(1.0)); double senoDipi = sin(pi); //<- qui ho messo lo step del debug return Complex(newReal, newImg); } //newReal e newImg sono i nuovi valori da assegnare alle componenti reale ed immaginaria di Complex
A parte il fatto che dovrebbe tornare 0, il risultato è maggiore di 1, quindi è doppiamente sbagliato!
Questi sono i risultati del debug facendo entrare:
Complex c= 0+i1;
exponent = 2;
Non so che fare.. io non penso di aver fatto errori di sintassi, i valori calcolati sono tutti esatti [il complesso 0+i infatti ha un angolo di 90°, che moltiplicato per l'esponente (2) fa 180° che in radianti è piGreco (3.14)]codice:Name | Value | Type a 1.570 double exponent 2 int fi 3.141 double newImg 1.224 double newReal -1 double normTo_n 1 double pi 3.141 double seno 1.2246 double senoDipi 1.2246 double
è proprio che il sin(piGreco) torna 1.22eccetera.
Vi è mai capitato?
Mi tocca riscrivere la funzione seno?
Consigli?
Magari qualcuno se lo può incollare sul proprio compilatore e dirmi se da lo stesso risultato?

Rispondi quotando