Komplekse tal i c++

Tags:    c++

<< < 12 > >>
Hej til alle her på udvikleren.dk

Jeg er p.t. igang med et projekt, hvor jeg skal lave et program som kan regne rødderne på simple andengradsligninger. Da det er et program som kun skal kunne udregne de komplekse rødder i simple andengradsligninger, så kan koefficienterne sættes til at være reelle tal.

Det er lykkedes mig at programmere et program som kan udregne rødderne, men dette virker kun på inden for de reelle tal.

Er der nogen som ved hvad jeg skal gøre for at få programmet til at give mig de komplekse løsninger?

På forhånd tak for hjælpen :)

Sebastian



15 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 4 karma
Sorter efter stemmer Sorter efter dato
Hvad kan du ikke få til at virke?
Fold kodeboks ind/udKode 

virker helt fint for mig (jeg tager kvadratet på kvadratroden af -1, og det giver ganske rigtigt -1)




Indlæg senest redigeret d. 15.12.2008 20:41 af Bruger #8249
fejl indlæg :-S



Indlæg senest redigeret d. 19.12.2008 14:43 af Bruger #5674
I C++ har man typen complex, det er en template, hvor man angiver hvilken underlæggende data type der skal bruges, oftest double.

Dermed kan man lave kode som:

Fold kodeboks ind/udKode 




Tak for svaret..men er ikke kommet meget videre.. hvis jeg f.eks. skal skrive kvadratroden af -1 og få den til at regne med det, kan jeg sku ikke få det til at virke.. ?



okay, ser ud til at have fattet det nu.. :)

men der er endnu et problem, for når løsningerne skal skrives får jeg noget som ikke giver mening.
Hvis jeg f.eks. har en funktion der hedder 2x^2+x+1, får jeg følgende løsninger:
1.#QNAN og -1.#IND

Nogen som kender noget til det, og ved hvad jeg skal gøre?




Du bliver nødt til at lave -1 om til et komplex tal, så kan du tage kvadratroden:
Fold kodeboks ind/udKode 




Forstår ikke helt hvor jeg skal indsætte det?
min kode er som følger:
Fold kodeboks ind/udKode 






Indlæg senest redigeret d. 15.12.2008 21:58 af Bruger #14495
I denne linje:
result1 = (-sqrt(result) - b) / 2 * a;

Tager du kvadratroden af "result", det er et problem, hvis result er mindre end 0, for så bliver rødderne komplexe,

Derfor skal result være en std::complex og result1 skal derfor også være en std::complex

C++ bruger man stort set aldrig data typen float, man bruger double.



Takker.. nu tror jeg, at jeg er ved at få styr på det..

Når jeg skal skrive løsningen, skal jeg så bruge
std::cout ? Hvordan skal jeg så skrive de to løsninger ind i det?
Indtil videre, med det jeg har prøvet er det kun lykkedes mig at komme frem til det samme som jeg opnåede før..



Du kan bare udskrive de to løsninger på samme måde som du gjorde sidst med std::cout

Prøv at poste hele programmet, så kan vi tage et kik på det.



<< < 12 > >>
t