Vypocet zaporneho diskriminantu – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Vypocet zaporneho diskriminantu – C / C++ – Fórum – Programujte.comVypocet zaporneho diskriminantu – C / C++ – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Dodo0
Newbie
5. 10. 2009   #1
-
0
-

Ahojte
Dostal som ulohu spravit program v jazyku C na vypocet kvadratickej rovnice. Tento program mam hotovy uzivatel zada koeficienty a,b,c a program vypocita D zisti ci je kladny zaporny alebo rovny nule a hodi vysledok korenou. Mam to aj osetrene proti zlemu zadaniu koeficientou napr a=0... Ale problem je v tom, ze ked diskriminant vide mensi ako nula tak som dal ze rovnica nema v obore R riesenie. Len ono sa to nejako da ze bude mat riesenie v obore komplexnych cisel. Len ja neviem ten vzorec podla ktoreho by som to mohol zapisat do programu. Viem ze ked je D zaporne tak napriklad D=-50 tak to je odmocnona z -50, a to je vlastne odmocnina z -1*50 no a -1 je komplexne cislo i. takze to je vo vysledku i*odmocnina z 50, ale neviem ten vzorec ako to zapisat do programu :(
Dakujem za rady

Nahlásit jako SPAM
IP: 195.113.96.–
Reklama
Reklama
sputnikone+1
Věrný člen
5. 10. 2009   #2
-
0
-

rozložíš si to na x=-b/2a a y=√-D/2a, spočteš ty hodnoty a to potom zapíšeš ve tvaru z1=x+iy a z2=x-iy

Nahlásit jako SPAM
IP: 147.251.201.–
dannyk0
Věrný člen
5. 10. 2009   #3
-
0
-

Podle me je jednodussi reseni, pokud detekuje zaporne cislo, tak ze ho vyjadri v komplexnim cisle pomoci i^2, ktere znaci zaporne cislo. Ostatni pripady se temer vylucne nepouzivaji. Takze muj algo by byl asi takovy:



if (zaporny diskriminant)
vysledek = sqrt(kladny diskriminant) * i^2

Matematicky je to podle me spravne, pokud je v tom chybka, tak me opravte.

Nahlásit jako SPAM
IP: 85.135.97.–
Jedu v c++,c#,assembler,ASP.NET,PHP,databaze,bezpecnost softwaru[br] -----------------------------------------------------------[br] Muj blog o programovani,hudbe a vsem moznem,co najdu na netu :) [br] http://dannyk.aspone.cz[br] -----------------------------------------------------------[br] Na foru mam nejake prispevky pod nickem Master,tak jen pro upresneni :)
m->29+6
Super člen
5. 10. 2009   #4
-
0
-

Študoval som to dlho, ale nechápem ako si to predstavuješ. Čo má byť pemenná vysledek? Podľa toho čo si napísal tak by obsahovala hodnotu -sqrt(abs(D)); No vzorec na imaginárnu časť čísla je (sqrt(abs(D))/2*a)*i.

Jednoducho nechápem aké zjednodušenie tým dosiahneš a som zvedavý. Mohol by si trochu (trochu viac :smile1: ) rozviesť?

Nahlásit jako SPAM
IP: 147.229.208.–
dannyk0
Věrný člen
5. 10. 2009   #5
-
0
-

No ono to o moc vic zjednodusit nejde. Podle me by ten vzorec spis mohl vypadat takto:



sqrt(abs(D))*i^2

Nahlásit jako SPAM
IP: 85.135.97.–
Jedu v c++,c#,assembler,ASP.NET,PHP,databaze,bezpecnost softwaru[br] -----------------------------------------------------------[br] Muj blog o programovani,hudbe a vsem moznem,co najdu na netu :) [br] http://dannyk.aspone.cz[br] -----------------------------------------------------------[br] Na foru mam nejake prispevky pod nickem Master,tak jen pro upresneni :)
Dodo0
Newbie
8. 10. 2009   #6
-
0
-

tak som sa s tym pohral troska a podarilo sa mi vytvorit taketo nieco

ratame uz s tym ze diskriminant mam vypocitany aj zadane koeficienty a toto je iba podmienka ak D < 0 (zaporny)


if(diskriminant<0)
{
/*
X1,2 = Re+iIm
e = Re (realne)
d = Im (imaginarne)
*/
// d = sqrt(sqrt((diskriminant)*(diskriminant))); - tento typ je tiez funkcny urobi mi tak isto absolutnu hodnotu z diskriminantu.
d = sqrt(abs(diskriminant));
e = -b; / b je koeficient ktory som zadal tak zapornu hodnotu toho koef. priradim do e.
a = 2*a;
d = d/a;
e = e/a;
printf("Diskriminant je mensi ako nula, preto ma rovnica dve komplexne riesenia x1 a x2.");
printf("\nx1= %f +i(%f)", e, d);
printf("\nx2= %f -i(%f)", e, d);
}

myslim ze mi to funguje spravne :) ked mam napr koeficienty a=6 b=3 c=2 tak diskriminant vide -39 tak vysledok mi vypise
x1= 0.250000 +i(0.520416)
x2=0.250000 -i(0.520416)
Dakujem za rady

Nahlásit jako SPAM
IP: 195.178.88.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 110 hostů

Podobná vlákna

Vypocet pi — založil Nemo_001

Výpočet na GK — založil Midnight

Vypocet v C# — založil vyhno

Výpočet neznámej — založil Miloš

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý