Ich bin Schüler der Jahrgangsstufe 13 und muss noch ein Info - PROJEKT fertigstellen.
Meine Aufgabe war es, die grafische Ausgabe einer Funktion zu programmieren.
Das funktioniert auch alles. Ich würde gerne noch 2 Elemente hinzufügen.
Ich schaffe es irgendwie nicht, die y - Achse einzuteilen.Was müsste ich dort verwenden?
Hier mein Programmcode :
Code: Alles auswählen
from Tkinter import *
from math import *
def zeichnen():
s = eingabe.get()
for i in range(8000):
x = i/400.0 - 10
f = eval(s)
flaeche.create_line(x*50+500,400-f*40,x*50+501,400-f*40)
def Einteilung():
for x in range (-500,500):
flaeche.create_line(x*34+500,395,x*34+500,405)
for x in range (0,500):
flaeche.create_line(495,f*28,35+400,505,f*28,35+400) # Der range befehl nimmt nur 3 werte.brauche aber ja 4??
window = Tk()
window.title("Funktionsplotter")
flaeche = Canvas(window, width=1000, height=800)
eingabe = Entry(window, width=40)
label1 = Label(window, text='f(x)=')
button = Button(window,text='zeichnen',command=zeichnen)
button1 = Button(window,text='X-Achse',command=Einteilung)
button2 = Button(window,text='Y-Achse',command=Einteilung)
flaeche.pack()
label1.pack(side=LEFT)
eingabe.pack(side=LEFT)
button.pack(side=RIGHT,pady=10,padx=10)
button1.pack(side=RIGHT,pady=30,padx=30)
flaeche.create_line(0,400,1000,400,width=0.1, arrow=LAST)
flaeche.create_line(500,800,500,0,width=0.1, arrow=LAST)
window.mainloop()
Ich muss mein Programm auch nächste Woche vorstellen.
Ich kann meine Funktion "def zeichnen" aber schlecht erklären.Ich habe ziemlich lange herumgebastelt, bis es funktioniert hat.

Also ich würde das meinen Mitschülern so erklären:
Ich lese über mein entry die Funktion ein.
Über die eval ( ) Funktion wird der zugehörigen y - Wert berechnet [ f(x) ].
Die for - Anweisung bildet die Grenze der x - Werte.( bis i halt 7999 ist )
Also bei x = 10!
Aber wie soll ich die Formel erklären.Ich habe mich bei der Berechnung auf den Ursprung - also 0-Punkt - bezogen.Ich habe die 8000 Bildpunkte geteilt - 4000

Vielleicht hat ja jemand eine bessere Erklärung.
Ich wäre für Vorschläge echt dankbar