Graphen erstellen ( Kurvendiskussion )

Fragen zu Tkinter.
Antworten
Dawinchi
User
Beiträge: 3
Registriert: Dienstag 5. April 2011, 15:20

Hallo liebe Python Gemeinde,
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. :lol:

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 :) - und dann durch die Hälfte der y - Achse (400 )geteilt. Die -10 kommen daher, dass 4000/400 = 10 ergibt.Da ich mich aber im Nullpunkt befinde, also noch -10. Dann hats erstaunlicherweise funktioniert.
Vielleicht hat ja jemand eine bessere Erklärung.
Ich wäre für Vorschläge echt dankbar
Zuletzt geändert von Anonymous am Dienstag 5. April 2011, 17:37, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Code-Tags gesetzt.
Benutzeravatar
daemonTutorials
User
Beiträge: 171
Registriert: Sonntag 6. Februar 2011, 12:06
Kontaktdaten:

Eine Frage: Geben die User eine Formel ein?
Du kannst das ja anders über 2 oder 3 Eingaben machen und die Formel mit Python erstellen lassen.
LG Maik
Dawinchi
User
Beiträge: 3
Registriert: Dienstag 5. April 2011, 15:20

Also die funktion wird über das entry EINGABE vom user eingegeben. Die Funktionen sind ja durch die Optionen von Import begrenzt.
Dawinchi
User
Beiträge: 3
Registriert: Dienstag 5. April 2011, 15:20

Achso ich glaube, ich weiß wo das problem liegt.Ich hab das in der schule mit python 2.6 geschrieben. Mit der neuesten Version habe ich das noch nicht probiert.
Benutzeravatar
daemonTutorials
User
Beiträge: 171
Registriert: Sonntag 6. Februar 2011, 12:06
Kontaktdaten:

Jo! Python3.1 ist nicht abwärtskompatibel mit Python 2.6. Daran wird es wohl liegen.
Aber finde ich persönlich gut so!
LG Maik
Antworten