def Rysuj(self): sizex = self.GetSize()[0] sizey = self.GetSize()[1] self.dc.Clear() self.dc.SetPen(wx.Pen((0,0,0), 1)) #self.dc.DrawLine(0, 0, 300, 200) self.dc.DrawLine(0, sizey/2, sizex, sizey/2) #x self.dc.DrawLine(sizex-10, sizey/2-10, sizex, sizey/2) self.dc.DrawLine(sizex, sizey/2, sizex-10, sizey/2+10) for y in range(0, sizey/20+1): if y%5==0: self.dc.DrawLine(sizex/2-5, sizey/2-y*10, sizex/2+5, sizey/2-y*10) self.dc.DrawLine(sizex/2-5, sizey/2+y*10, sizex/2+5, sizey/2+y*10) else: self.dc.DrawLine(sizex/2-2, sizey/2-y*10, sizex/2+2, sizey/2-y*10) self.dc.DrawLine(sizex/2-2, y*10+sizey/2, sizex/2+2, y*10+sizey/2) for x in range(0, sizex/20+1): if x%5==0: self.dc.DrawLine(sizex/2-x*10, sizey/2-5, sizex/2-x*10, sizey/2+5) self.dc.DrawLine(sizex/2+x*10, sizey/2-5, sizex/2+x*10, sizey/2+5) else: self.dc.DrawLine(sizex/2-x*10, sizey/2-2, sizex/2-x*10, sizey/2+2) self.dc.DrawLine(sizex/2+x*10, sizey/2-2, sizex/2+x*10, sizey/2+2) self.dc.DrawLine(sizex/2, 0, sizex/2, sizey) #y self.dc.DrawLine(sizex/2-10, 10, sizex/2, 0) self.dc.DrawLine(sizex/2, 0, sizex/2+10,10) self.dc.DrawLabel("X", (sizex-20,sizey/2-12,8,8)) self.dc.DrawLabel("Y", (sizex/2+1,10,8,8)) self.dc.DrawLabel("0", (sizex/2+6,sizey/2-16,8,8)) self.dc.DrawLabel(str(nm(self.sx/2.0)), (sizex/2+46,sizey/2-19,8,8)) self.dc.DrawLabel(str(nm(self.sy/2.0)), (sizex/2+6,sizey/2-56,8,8)) for k in self.lista: self.dc.SetPen(wx.Pen(k[0], 2)) self.dc.DrawLines(k[1])
def main(): print u"Witam w programie X-enon!" opcja = 1000 while opcja != 0: print u"Wpisz liczbę by:" print u" 1) Uruchomić Active Shell" print u" 2) Dodać / Odjąć / Pomnożyć dwa wielomiany" print u" 3) Podzielić dwa wielomiany" print u" 4) Podzielić dwa wielomiany metodą Hornera" print u" 5) Wymożyć postać iloczynową wielomianu" print u" 6) Narysować wykres wielomianu" print u" 7) Znaleźć wymierne miejsca zerowe wielomianu o współczynnikach całkowitych" print u" 8) Przybliżyć miejsca zerowe wielomianu" print u" 9) Rozłożyc wielomian na czynniki" print u" 0) Wyjść z programu" opcja = pobierz(u"Wybieram ", "") while opcja < 0 or opcja > 9 or opcja != int(opcja): print u"Liczba spoza zakresu!" opcja = pobierz(u"Wybieram ", "") if opcja == 1: code.interact( banner="Python shell with Wielomiany\nImplemented objects: nm, wykres, wielomian, pobierz, pobwiel, pobwiel2, horner, miejscabf, pierwiastkir, mnoz", local=locals(), ) elif opcja == 2: print u"Wyświetlę wynik z działania W?Q (W,Q - wielomiany, ? - znak działania (+,-,*))" z = "" while z not in ("+", "-", "*"): z = raw_input("? = ") if z not in ("+", "-", "*"): print u"Ta opcja obsługuje tylko dodawanie, odejmowanie i mnożenie!" w = pobwiel2("W") q = pobwiel2("Q") print "W(x) = " + str(w) print "Q(x) = " + str(q) print "W(x) " + z + " Q(x)", "=", eval("w" + z + "q") elif opcja == 3: w = pobwiel2("W") q = pobwiel2("Q") print "W(x) = " + str(w) print "Q(x) = " + str(q) r = w.dziel(q) rr = "" if str(r[1]) != "0": rr = "Reszta " + str(r[1]) print "W(x) / Q(x) =", r[0], rr elif opcja == 4: print u"Podzielę W(x) przez dwumian (x-r)" r = pobierz("r") w = pobwiel2("W") rr = w.dziel(wielomian(1, r * -1)) rt = "" if str(rr[1]) != "0": rt = "Reszta " + str(rr[1]) print "W(x) = " + str(w) print "W(x) / (x-" + str(r) + ") =", rr[0], rt horner(w, r) elif opcja == 5: r = raw_input("W(x) = ") print "W(x) = " + str(mnoz(r)) elif opcja == 6: w = pobwiel2("W") print "W(x) = " + str(w) wyk = wykres() wyk.dodaj(w) print u"Policzę W(x) jeśli podasz x" x = "a" while x != "": x = raw_input("x = ") try: x = float(x) print w(x) except ValueError: if x != "": print u"To nie jest liczba!" elif opcja == 7: s = -1 while s < 0: s = pobierz("Stopien wielomianu W") if s < 0: print u"Stopień wielomianu nie może być ujemny!" if int(s) != s: print u"Stopień wielomianu musi być całkowity!" s = -1 w = wielomian() while s >= 0: ws = 0.5 while type(nm(ws)) == float: ws = pobierz("Wspolczynnik W przy x^" + str(int(s))) if type(nm(ws)) == float: print u"Współczynnik musi być całkowity!" w.wsp.append(ws) s -= 1 w.wsp.reverse() w.nm() print "W(x) = " + str(w) m = pierwiastkir(w) r = "Wymierne miejsca zerowe wielomianu W(x) to " for k in m: if k is m[0]: r += str(k) elif k is m[-1]: r += " i " + str(k) else: r += ", " + str(k) print r elif opcja == 8: w = pobwiel2("W") print "W(x) = " + str(w) m = miejscabf(w) r = "Miejsca zerowe wielomianu W(x) to " for k in m: if k is m[0]: r += str(k) elif k is m[-1]: r += " i " + str(k) else: r += ", " + str(k) print r elif opcja == 9: w = pobwiel2("W") print "W(x) = " + str(w) m = miejscabf(w) r = "" d = 1 * w for k in m: ws = wielomian(1, -1 * k) d = d // ws r += "(" + str(ws) + ")" try: if int(str(d)) == -1: r = "-" + r elif int(str(d)) == 1: pass else: r = str(d) + r except ValueError: r = "(" + str(d) + ")" + r print "W(x) = " + r if opcja != 0: raw_input("-> Menu")