Írj egy függvényt, ami a $$ ax^2+bx+c=0 $$ másodfokú egyenlet (valós és komplex) gyökeit határozza meg. Csak akkor kapjunk eredményként komplex számot, ha a diszkrimináns negatív!
Példaként add meg a következő négy egyenlet megoldását:
Mivel a pylab csomag több funkcióját is használni fogjuk, először ezt töltjük be:
%pylab inline
A masodfoku
függvényben először a diszkriminánst számítjuk ki, és attól függően megyünk tovább, hogy ez pozitív, vagy negatív-e. Ha a diszkrimináns negatív, akkor $x_1$ és $x_2$ értékét egyszerűen a másodfokú egyenlet megoldóképletével kiszámítjuk. Ha viszont negatív, akkor a megoldás komplex, így komplex típusú változót kell létrehozni.
def masodfoku(a,b,c):
D = b**2 - 4*a*c # A diszkrimináns kiszámítása
if D >= 0: # Ha D pozitív, a megoldóképletet alkalmazzuk
x1 = (-b + sqrt(D))/(2*a)
x2 = (-b - sqrt(D))/(2*a)
else: # Ha D negatív, akkor a gyökvonás eredménye képzetes lesz, így eszerint kell létrehozni egy komplex számot
x1 = (complex(-b,sqrt(-D)))/(2*a)
x2 = (complex(-b,-sqrt(-D)))/(2*a)
return x1, x2
Végül nézzük a példafeladatokat:
masodfoku(1,0,-100) # 1. feladat
masodfoku(3,-25,-10) # 2. feladat
masodfoku(-4,4,-1) # 3. feladat
masodfoku(25,16,100)