Goldenen Schnitt berechnen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Jatch
User
Beiträge: 8
Registriert: Freitag 2. Oktober 2009, 16:19
Kontaktdaten:

Freitag 2. Oktober 2009, 21:37

N'Abend,
ich habe mir heute vorgenommen, mich mal in Python einzuarbeiten.
Erstmal wollte ich kleine Programme zum Berechnen irgendwelcher Dinge schreiben.
Habe auch schon ein paar simple zum laufen gebracht.
Nun wollte ich ein Skript schreiben, mit dem man den Goldenen Schnitt berechnen kann.

Hier mein Code:

Code: Alles auswählen

#! /usr/bin/python
import sys

N = int(sys.argv[1])
fib1,fib2=1, 1

for step in range ( N):
	w=float(fib2//fib1)	
	fib1,fib2= fib2, fib1+fib2

	print w	 
Es werden allerdings nicht die richtigen Werte ausgegeben:
1.0,2.0,1.0,1.0 usw.
Wäre nett, wenn mir jmd auf die Sprünge helfen könnte
:D [/code]
BlackJack

Freitag 2. Oktober 2009, 21:52

Jatch: Vielleicht hilft es ja schon, wenn Du statt des Operators für die Ganzzahldivision ``//`` den normalen Divisionsoperator ``/`` verwendest. :-)
Jatch
User
Beiträge: 8
Registriert: Freitag 2. Oktober 2009, 16:19
Kontaktdaten:

Freitag 2. Oktober 2009, 21:56

Hi,
das hatte ich bereits ausprobiert,mit dem gleichen Ergebnis :cry:
BlackJack

Freitag 2. Oktober 2009, 22:47

@Jatch: Okay, ich hatte nur kurz draufgeschaut. Es sollte mindestens eine der beteiligten Zahlen eine Fliesskommazahl sein. Es nützt nicht so viel das ganzzahlige Ergebnis hinterher in eine Fliesskommazahl umzuwandeln.
Jatch
User
Beiträge: 8
Registriert: Freitag 2. Oktober 2009, 16:19
Kontaktdaten:

Freitag 2. Oktober 2009, 22:58

Du bist mein Held :D :D
es klappt jetzt wunderbar, vielen Dank
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

Freitag 2. Oktober 2009, 22:58

Code: Alles auswählen

import sys

N = int(sys.argv[1])
fib1, fib2 = 1.0, 1.0

for step in range(N):
    w = float(fib2/fib1)   
    fib1, fib2 = fib2, fib1+fib2

    print w
BlackJack

Samstag 3. Oktober 2009, 07:41

@Dauerbaustelle: Der `float()`-Aufruf ist da jetzt überflüssig.
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Samstag 3. Oktober 2009, 09:01

Jatch hat geschrieben:Nun wollte ich ein Skript schreiben, mit dem man den Goldenen Schnitt berechnen kann.

Code: Alles auswählen

>>> .5+.5*5**.5
1.6180339887498949
Benutzeravatar
b.esser-wisser
User
Beiträge: 272
Registriert: Freitag 20. Februar 2009, 14:21
Wohnort: Bundeshauptstadt B.

Samstag 3. Oktober 2009, 11:14

Jetzt fehlt noch der Hinweis auf die Division in Python 3 bzw. bei "from __future__ import division":

Code: Alles auswählen

>>> 4 / 2
2
>>> 4 / 3
1
>>> 4.0 / 3
1.3333333333
>>> 4.0 // 3.0
1.0
>>> from __future__ import division
>>> 4 // 2
2
>>> 4 / 2
2.0
>>> 4 / 3
1.3333333333
hth, Jörg
Wir haben schon 10% vom 21. Jahrhundert hinter uns!
Benutzeravatar
pillmuncher
User
Beiträge: 1165
Registriert: Samstag 21. März 2009, 22:59
Wohnort: München

Samstag 10. Oktober 2009, 20:54

Code: Alles auswählen

(pow(5,1/2.)-1)/2+1
Gruß,
Mick.
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Samstag 10. Oktober 2009, 22:37

pillmuncher hat geschrieben:

Code: Alles auswählen

(pow(5,1/2.)-1)/2+1
Da gefällt mir meine Variante (s.o.) aber besser:

Code: Alles auswählen

.5+.5*5**.5
oder, noch ästhetischer:

Code: Alles auswählen

5**.5*.5+.5
Benutzeravatar
pillmuncher
User
Beiträge: 1165
Registriert: Samstag 21. März 2009, 22:59
Wohnort: München

Sonntag 11. Oktober 2009, 20:11

numerix hat geschrieben:
pillmuncher hat geschrieben:

Code: Alles auswählen

(pow(5,1/2.)-1)/2+1

Code: Alles auswählen

5**.5*.5+.5
+1

Schade aber, dass die 5 nur viermal vorkommt...

Gruß,
Mick.
Antworten