Wertetabelle für eine Funktion f(x) in Python erstellen?
Ich habe in Python einen kleinen Taschenrechner programmiert (ohne "Benutzeroberfläche", da ich noch nicht weiß wie ich so eine Grafik programmiere), der, bis jetzt, eigentlich ziemlich simpel ist.
Der Taschenrechner hat eine "Konstantenliste" un eine Formelsammlung, die er ausgeben kann und, ich glaube, circa 10 neue Rechenoperatoren, wie den Kotangens. Natürlich kann er auch eine eingegebene Rechnung lösen.
Das Problem ist, dass ich noch die Funktion einbauen will, dass man bei der Eingabe, zum Beispiel "Funktion" eingibt und man dann eine Funktion (wie 3(x**2)+5x+3) eingeben kann. Danach soll man noch den Bereich, den man sich anschauen will (wie (-10, 10)) eingeben und die Schritte (wie 0.5).
Wenn man das gemacht hat, soll das Programm einem eine Wertetabelle für die Funktion im genannten Intervall, in dem die x-Werte um den eingegebenen Schritt erhöht werden, ausgeben.
Jedoch weiß ich nicht, wie ich das machen soll und ich habe auch nichts dazu im Internet gefunden.
2 Antworten
Über den Bereich eine Schleife bauen, mit der angegebenen Schrittweite.
Für x den jweiligen Schleifenwert in die Funktion einsetzten und ausrechnen (lassen)
ich habs mit try und except gemacht (try x=eval (x) ; except DivisionbyZeroError print("x=",x "f(x)= nicht definiert")
das einzige, dass mir immer noch fehlt, ist jedoch bei weitem komplizierter.
Und zwar soll mir der Rechner auch noch f'(x), f"(x), f'"(x), Nullstellen, Extrempunkte, Sattelpunkte, Wendepunkte, Golbalverhalten und Symmetrie angeben...
Das einzige das ich weiß, ist dass ich das programm irgendwie dazu bringen muss den Diferentenquotienten auszurechnen (auch wenn eigentlich 0 im Nenner steht) (f(x)-f(x1))/(x-x1)
Danke. Aus irgendeinem Grund bin ich nicht darauf gekommen, obwohl die Lösung ja eigentlich recht nahe liegend ist. ;)
Falls du noch Interesse hast, mir an einem weiteren Problem zu helfen, dann habe ich noch diese Frage an dich:
Mein Taschenrechner gibt mir ganz normal eine Wertetabelle für den gewünschten Bereich an, jedoch bricht mein Programm (natürlicherweise) ab, wenn es die Definitionslücke einer nicht stetigen Funktion wie f(x)=1/x behandeln soll. Kann man das Programm irgendwie so umschreiben, dass es die Definitionslücke einer Funktion erkennt, diese umgeht und nur "nicht definiert" ausgibt?
falls du es vorhattest mir zu helfen, brauchst du dies nicht mehr, da ich so eben die try und except funktionen entdeckt habe ;)
Ich habe 3*x^2 gemeint (wolle ** wie in Python eingeben)
Du meinst mit Definitionslücke sicherlich 1 / 0 (also wenn x den Wert null bekommet)
Das ganze ist aufwendiger (könnte ja auch 1/ (x+6) heissen, dann wäre die Lücke bei x = - 6)
Als Ansatz -- habe da jetzt nicht weiter überlegt, würde ich, bevor der y-Wert berechnet wird, aber klarerweise innerhalb der Schleife, irgendwie eine switch-case-Konstruktion einbauen, um jede Definitionslücke abzufangen -- was aber sicherlich aufwendig ist.
Versuche es mit einem Try-Catch-Block um die Berechnuing (also Exception-Handling, gibt es in allen C-Derivaten, JAVA, Pascal ... sicherlich auch in Phyton) , wenn z.B. "Divisor 0 not allowed" oder so ähnlich kommt, dann kanns du im Catch-Block dein "not defined" schreiben, und die Schleife mit dem nächsten x weiterlaufen lassen.
Also, schau mal nach Try-Catch und Exception-Handling