Obliczanie delty w pythonie

0

Witam, zaczynam swoją edukację w pythonie i mam problem z obliczaniem delty ujemnej, wyskakuje mi błąd, którego nie wiem jak się pozbyć(wujek google nie pomaga)

Oto kod programu:

a=int(input("Podaj a: "))
b=int(input("Podaj b: "))
c=int(input("Podaj c: "))

print("a = %d" % (a))
print("b = %d" % (b))
print("c = %d" % (c))

delta = (b*b)-4*(a*c)
print("Delta wynosi: %d" % (delta))
#pdelta = pow(delta,1/2.0)
#print("Pierwiastek z delty wynosi: %d" % (pdelta))

if delta>0:
    pdelta = pow(delta,1/2.0)
    print("Pierwiastek z delty wynosi: %d" % (pdelta))
    x1 = (-b-pdelta)/2*a
    x2 = (-b+pdelta)/2*a
    print("Delta dodatnia, posiada dwa miejsca zerowe x1 i x2, ktorych wartosci wynosza: %d  i  %d" % (x1,x2))
if delta==0:
    x3=-b/2*a
    print("Delta wynosi 0, posiada więc ona jedno miejsce zerowe, ktorej wartosc to %d" % (x3))
if delta<0:
    pdelta = pow(delta,1/2.0)
    print("Pierwiastek z delty wynosi: %d" % (pdelta))
    re=(-b-pdelta)/2*a
    im=(-b+pdelta)/2*a
    print("Czesc rzeczywista: (-%d-%d i)/2*%d" % (b,pdelta,a))
    print("Czesc urojona: (-%d+%d i)/2*%d" % (b,pdelta,a))

bład występuje wyłącznie wtedy, kiedy próbuję obliczać delte ujemną. Z góry dziękuje i pozdrawiam

0

Ot tak se nie możesz pierwiastkować liczb ujemnych, o czym byś wiedział, gdybyś najpierw poszukał w Google :P

0
pdelta = complex(delta)**0.5

Masz błędne wzory na pierwiastki równania.

0

funkcja sqrt z modułu cmath (nie pomyl z math!) zwraca pierwiastek zespolony. - znalazlem to w google dzieki tobie, zobacze czy cos to zmieni i dam znac

0

Postanowiłem zrozumieć ten błąd wyskakujący przy tym i zrozumiałem że %d wymaga liczby, a wychodzi mi complex co oznacza złożony, czy od odczytywania złożonego wyniku używa się %s?

0

a=int(input("Podaj a: "))
b=int(input("Podaj b: "))
c=int(input("Podaj c: "))

print("a = %d" % (a))
print("b = %d" % (b))
print("c = %d" % (c))

delta = (b*b)-4*(a*c)

print("Delta wynosi: %d" % (delta))
#pdelta = pow(delta,1/2.0)
#print("Pierwiastek z delty wynosi: %d" % (pdelta))

if delta>0:
    pdelta = pow(delta,1/2.0)
    print("Pierwiastek z delty wynosi: %d" % (pdelta))
    x1 = (-b-pdelta)/2*a
    x2 = (-b+pdelta)/2*a
    print("Delta dodatnia, posiada dwa miejsca zerowe x1 i x2, ktorych wartosci wynosza: %d  i  %d" % (x1,x2))
if delta==0:
    x3=-b/2*a
    print("Delta wynosi 0, posiada więc ona jedno miejsce zerowe, ktorej wartosc to %d" % (x3))
if delta<0:
    pdelta = complex(delta)**0.5
    print("Pierwiastek z delty wynosi: %s" % (pdelta))
    re=(-b-pdelta)/2*a
    im=(-b+pdelta)/2*a
    print("Czesc rzeczywista: %s" % (re))
    print("Czesc urojona: %s" % (im))

Czy wyniki dla tych liczb zespolonych da się zaokrąglić załóżmy do 5 miejsc po przecinku? jeżeli tak to mógłby mi ktoś podać przykład czegoś takiego? Z góry dziękuje

0

Google Twoim przyjacielem, np. python format complex.
Btw. w tym kontekście complex nie oznacza złożony. Complex number (w skrócie complex), to liczba zespolona.

http://stackoverflow.com/questions/7746143/formating-complex-numbers
Napisałem Ci kilka postów temu, że masz błędne wzory. Nie poprawiłeś ich, nadal są błędne.
Zdanie

Delta wynosi 0, posiada więc ona jedno miejsce zerowe, ktorej wartosc
jest nieprawdziwe. Delta jest liczbą i mówienie o ilości jej miejsc zerowych jest bez sensu.
Powinno być
Delta wynosi 0, zatem równanie posiada jedno miejsce zerowe, ktorego wartosc

0

Bardzo dziękuje za cierpliwość i pomoc, wszystko ogarnąłem więc temat można zamknąć. Pozdrawiam

0

Czy wyniki dla tych liczb zespolonych da się zaokrąglić załóżmy do 5 miejsc po przecinku?

Zobacz PyFormat.info, tam masz wszystko w temacie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1