Equazioni numeri complessi in Ch
Salve, sto provando a creare un programma, in formato Ch, che mi risolva la seguente equazione complessa:
$ L1e^{itheta1} + L2 e^{itheta2} + L3e^{itheta3} + L4e^{itheta4}=0 $
Sono note le grandezze L1, L2, L3, L4 e l'angolo $ theta4 $ pari a $ pi $ .
Devo cercare di studiare il tutto in funzione dell'angolo $ theta1 $ che deve compiere rotazioni da 0 a 360 gradi.
Ho provato quindi a risolvere il seguente problema arrivando a scrivere il codice che riporto qui sotto:
Il codice è sbagliato ma non riesco a capire dove.

Molto probabilmente starò facendo una grossa cavolata da qualche parte ma non so dove, l'unica cosa che mi è venuta in mente è che in complexsolve gli arrey vengono inseriti in modo diverso da come ho fatto io o che non abbia senso definire arrey complex.
Vi ringrazio in anticipo per l'attenzione.
$ L1e^{itheta1} + L2 e^{itheta2} + L3e^{itheta3} + L4e^{itheta4}=0 $
Sono note le grandezze L1, L2, L3, L4 e l'angolo $ theta4 $ pari a $ pi $ .
Devo cercare di studiare il tutto in funzione dell'angolo $ theta1 $ che deve compiere rotazioni da 0 a 360 gradi.
Ho provato quindi a risolvere il seguente problema arrivando a scrivere il codice che riporto qui sotto:
#include <math.h> #include <array.h> #include <stdio.h> #include <chplot.h> int main () { int n1, n2; int nstep=360; array double theta1[nstep]; array complex z3[nstep], num[nstep], x1[nstep], x2[nstep], x3[nstep], x4[nstep]; double theta_or_r1, theta_or_r2, t2; complex error; int i=0; for(t2=0;t2<=nstep-1;t2=t2+1){ theta1[i]=M_PI*t2/180; theta_or_r1 = 2.3812; theta_or_r2 = 2.2361; z3[i] = polar(1,0)-polar(1.8778*cos(theta1[i]),1.8778*sin(theta1[i])); i=i+1; } /* problem (2), n1 = 2, n2 = 4 */ n1 = 2, n2 = 4; num[i] = complexsolve(n1, n2, theta_or_r1, theta_or_r2, z3, x1[i], x2[i], x3[i], x4[i]); printf("For n1=2, n2=4, the number of solution is = %d\n", num); printf("phi1 = %f phi2 = %f\n", x1, x2); printf("phi1 = %f phi2 = %f\n", x3, x4); printf (theta1); }
Il codice è sbagliato ma non riesco a capire dove.


Molto probabilmente starò facendo una grossa cavolata da qualche parte ma non so dove, l'unica cosa che mi è venuta in mente è che in complexsolve gli arrey vengono inseriti in modo diverso da come ho fatto io o che non abbia senso definire arrey complex.
Vi ringrazio in anticipo per l'attenzione.
Risposte
n1 = 2 ;
Prova ora...
Prova ora...
Grazie per il tentativo ma il complexsolve li vuole la virgola, con n1=2 viene indicata la posizione della variabile che deve calcolare ossia l'esponente del primo numero complesso.
Il codice è sbagliato ma non riesco a capire dove.
Come fai a dirlo? Ottieni risultati errati? Puoi sapere quanto errati oppure sono palesemente errati?
Giustifica meglio questa affermazione.
Mi printa un a schermata di risposta di questo tipo :
"For n1=2, n2=4, the number of solution is = complex(z,z)" mentre io come risposta vorrei i valori di $ theta2 $ e $ theta3 $ al variare di $ theta1 $
"For n1=2, n2=4, the number of solution is = complex(z,z)" mentre io come risposta vorrei i valori di $ theta2 $ e $ theta3 $ al variare di $ theta1 $
Eh si sembra ti manchi un ciclo... 
Comunque 'num' è un array, che passi ad una printf(). In Ch puoi farlo ed ha senso farlo? A quanto vedo dall'output della printf(), direi di no.
Credo tu abbia da revisionare il tuo codice un po'. Non è che hai fatto copiancolla da un'altra parte senza sapere bene cosa facevi?

Comunque 'num' è un array, che passi ad una printf(). In Ch puoi farlo ed ha senso farlo? A quanto vedo dall'output della printf(), direi di no.
Credo tu abbia da revisionare il tuo codice un po'. Non è che hai fatto copiancolla da un'altra parte senza sapere bene cosa facevi?
No non ho fatto il copia incolla perchè non sono riuscito a trovare nulla su internet, comunque ho sistemato il codice ed ora funziona quasi del tutto l'unico problema che mi resta da risolvere è che mi restituisce valori negativi dell'angolo (ad esempio se l'angolo fosse di 110° mi printa il valore -110°) per il resto sono riuscito a farlo girare. 
Il problema maggiore era nel fatto che dovevo dichiarare "num" come int invece che come array complex.
Se volete posso printare il nuovo codice corretto...

Il problema maggiore era nel fatto che dovevo dichiarare "num" come int invece che come array complex.
Se volete posso printare il nuovo codice corretto...