Seite 1 von 1

Gebrochenrationale Funktionen

Verfasst: Sonntag 29. September 2013, 12:51
von Jaga
So wie schon so oft hängts wieder bei meinem Funktionsplotter.
Mir ist aufgefallen, dass alle Funktionen ganz normal geplottet werden bis eben die gebrochenrationalen.
Wieso weiß ich nicht und ich hoffe ihr könnt mir helfen.

hier die Formelanalysegeschichte:

Code: Alles auswählen

def formel_analysieren(self, genauigkeit, startwert, endwert):
            self.x = np.arange(float(startwert),float(endwert),float(genauigkeit))

            x = self.x
            formula_raw = self.entry_funktion.get().replace('e^x', 'exp(x)')
            formula_raw_exp = formula_raw.replace('e^', 'exp')
            formula_list = re.split('(\W)', formula_raw_exp)
            formula_replace = [REPLACE_DIC.get(item,item) for item in formula_list]
            self.formula_finish = ''.join(formula_replace)
            form = parser.expr(self.formula_finish).compile()
            try:
                self.y = eval(form)
                self.legend = self.entry_funktion.get()
            except NameError:
                self.y = np.sin(self.x)
                self.legend = 'sin(x)'
            
            return (self.x,self.y,self.legend)
        
    
        
def plotten(self):
            self.formel_analysieren(self.get_genauigkeit(),self.get_startwert(),self.get_endwert())
            plt.clf()
            plt.plot(self.x,self.y, label=self.legend)
            plt.grid('on')
            plt.xlabel('x - Achse')
            plt.ylabel('y - Achse')
            legend = plt.legend()
            legend.draggable(state=True)
            plt.gcf().canvas.draw()
def get_genauigkeit(self):
        if self.entry_genauigkeit.get() is "":
            return 0.01
        else:
            return self.entry_genauigkeit.get()
def get_startwert(self):
        if self.entry_startwert.get() is "":
            return -5
        else:
            return self.entry_startwert.get()

def get_endwert(self):
        if self.entry_endwert.get() is "":
            return 5
        else:
            return self.entry_endwert.get()