ja danke sehr...
wie mach ich ne wertetabelle?
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Ich hätte es ja so gelöst, das macht mehr Eindruck (finde ich) und ist auch irgendwie simpler (bis auf das xlrange, aber das versteht man auch):
gibt
aus.
Code: Alles auswählen
#!/usr/bin/env python
# -*- encoding: latin-1 -*-
def xlrange(start,stop=None,step=1):
"""xlrange([start=0,]stop[,step=1]) --> iterator object like xrange for longs"""
if stop==None:
stop=start
start=0
if step>0:
while start<stop:
yield start
start+=step
elif step<0:
while start>stop:
yield start
start+=step
else:
raise ValueError, "xlrange() arg 3 (step) must not be zero"
def process(x):
return 0.1 *x ** 4 - 0.1 * x ** 3 - 2.4 * x ** 2 + 0.4 * x + 8
def wertetabelle(start, stop, step):
for x in xlrange(start, stop + step, step):
print "x=%0.1f\t y=%0.5f" % (x, process(x))
if __name__ == '__main__':
wertetabelle(-4.5, 5.5, 0.5)
Code: Alles auswählen
x=-4.5 y=7.71875
x=-4.0 y=0.00000
x=-3.5 y=-3.50625
x=-3.0 y=-4.00000
x=-2.5 y=-2.53125
x=-2.0 y=0.00000
x=-1.5 y=2.84375
x=-1.0 y=5.40000
x=-0.5 y=7.21875
x=0.0 y=8.00000
x=0.5 y=7.59375
x=1.0 y=6.00000
x=1.5 y=3.36875
x=2.0 y=0.00000
x=2.5 y=-3.65625
x=3.0 y=-7.00000
x=3.5 y=-9.28125
x=4.0 y=-9.60000
x=4.5 y=-6.90625
x=5.0 y=0.00000
x=5.5 y=12.46875
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
@mawe
xt@ngel als gast hat geschrieben:Jo hab grad festgestellt das ich die Formel falsch hab....
hab die von mawe 1 zu 1 kopiert ohne dein post zu lesen
Hallo Jeanne!
Erstens ist es gut, daß Du Fragen dort stellst, wo auch qualifizierte Antworten zu erwarten sind; nur dadurch kannst Du eine Programmiersprache erlernen und später richtig anwenden ...
Zweitens möchte ich Dir eine (wiederverwertbare) Lösung liefern, ohne die Keule der OOP objektorientierten Programmierung auszupacken.
#1: Die Funktion "funktion" definiere ich selbständig, ist immer gut!
#2: Schaut zwar nach zu vielen Klammern aus, kann manchmal aber
hilfreich sein, wenn Du unerwartete Ergebnisse bekommst.
#3: Hier die Wertetabelle. Der erste Parameter ist die Funktion "f".
#4: "h" ist der momentane Schrittwert beginnend mit "start"
#5: Die "while"-Anweisung solange "h" kleiner oder gleich Endwert
#6: Ausgabe der momentanen "x"/"y"-Paares
#7: Erhöhen um Schrittweite (bzw. h = h + schritt)
#8: Aufruf der "wertetabelle". Der erste Parameter ist die Funktion
Meine "Hausaufgabe" an Dich: Diese paar Zeilen Quelltext verstehen! Das hast Du geschafft, wenn Du dieses kleine Grundgerüst für andere Aufgaben mal schnell umstricken kannst.
Viel Spaß
Michael
Erstens ist es gut, daß Du Fragen dort stellst, wo auch qualifizierte Antworten zu erwarten sind; nur dadurch kannst Du eine Programmiersprache erlernen und später richtig anwenden ...
Zweitens möchte ich Dir eine (wiederverwertbare) Lösung liefern, ohne die Keule der OOP objektorientierten Programmierung auszupacken.
Code: Alles auswählen
def funktion(x): #1
return (0.1*(x**4)) - (0.1*(x**3)) - (2.4*(x**2)) + (0.4*x) + 8.0 #2
def wertetabelle(f,start,stop,schritt): #3
h = start #4
while h <= stop: #5
print h,' ',f(h) #6
h += schritt #7
wertetabelle(funktion,-4.5,5.5,0.5) #8
#2: Schaut zwar nach zu vielen Klammern aus, kann manchmal aber
hilfreich sein, wenn Du unerwartete Ergebnisse bekommst.
#3: Hier die Wertetabelle. Der erste Parameter ist die Funktion "f".
#4: "h" ist der momentane Schrittwert beginnend mit "start"
#5: Die "while"-Anweisung solange "h" kleiner oder gleich Endwert
#6: Ausgabe der momentanen "x"/"y"-Paares
#7: Erhöhen um Schrittweite (bzw. h = h + schritt)
#8: Aufruf der "wertetabelle". Der erste Parameter ist die Funktion
- Ergebnisse:
-4.5 7.71875
-4.0 1.7763568394e-015
-3.5 -3.50625
-3.0 -4.0
-2.5 -2.53125
-2.0 8.881784197e-016
-1.5 2.84375
-1.0 5.4
-0.5 7.21875
0.0 8.0
0.5 7.59375
1.0 6.0
1.5 3.36875
2.0 8.881784197e-016
2.5 -3.65625
3.0 -7.0
3.5 -9.28125
4.0 -9.6
4.5 -6.90625
5.0 0.0
5.5 12.46875
Meine "Hausaufgabe" an Dich: Diese paar Zeilen Quelltext verstehen! Das hast Du geschafft, wenn Du dieses kleine Grundgerüst für andere Aufgaben mal schnell umstricken kannst.
Viel Spaß
Michael
Wollte nur mal anmerken das die Doku zu der Funktion etwas zu einschränkend ist. Wie man in diesem Fall sieht ist sie nicht auf `long` beschränkt sondern funktioniert auch prima mit `float`.Leonidas hat geschrieben:Ich hätte es ja so gelöst, das macht mehr Eindruck (finde ich) und ist auch irgendwie simpler (bis auf das xlrange, aber das versteht man auch):Code: Alles auswählen
#!/usr/bin/env python # -*- encoding: latin-1 -*- def xlrange(start,stop=None,step=1): """xlrange([start=0,]stop[,step=1]) --> iterator object like xrange for longs"""
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Ja, durchaus, aber ich habe sie einfach 1:1 von Milan kopiert ohne mir über die Doku Gedanken zu machen.BlackJack hat geschrieben:Wollte nur mal anmerken das die Doku zu der Funktion etwas zu einschränkend ist. Wie man in diesem Fall sieht ist sie nicht auf `long` beschränkt sondern funktioniert auch prima mit `float`.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice