Daten aus for-Schleifen verwenden und plotten

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
Ishmeet Vohra
User
Beiträge: 2
Registriert: Dienstag 18. Mai 2021, 18:35

Hallo Zusammen,

ich bin ein kompletter Anfänger in Python und hätte folgende Frage:
Ich habe zwei for-schleifen. Diese lieferen mir jeweils10 Einträge und ich möchte die Einträge(Zahlen) graphisch darstellen.

Code: Alles auswählen

print("Kettenbruchdarstellung")
x_kb=1
for i in range(1,11):
    x_kb=1+(1/x_kb)


    print("i=%4d x=%.12f"% (i,x_kb))


 
    
print("Kettenwurzeldarstellung")
x_kw=1
for i in range(1,11):
    x_kw=np.sqrt(1+x_kw)

    print("i=%4d x=%.12f"% (i,x_kw))

Jetzt ist die Frage wie mache ich das am besten? Vielleicht könnte man die Einträge in eine Liste umwandeln und dann plotten. Wie das geht wies ich aber auch nicht.
Zur Aufgabe: Es geht daraum graphisch zu zeigen das die Kettenbruchdarstellung der goldenen Zahl schneller gegen die goldene Zahl konvergiert als die Kettenwurzeldarstellung.
Wenn mir da Jemand weiterhelfen könnte, würde mir das sehr helfen:)
Benutzeravatar
__blackjack__
User
Beiträge: 14056
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Ishmeet Vohra: In der Python-Dokumentation gibt es ein Grundlagentutorial, und die übliche Bibliothek zum Plotten ist Matplotlib. Die hat auch eine recht umfangreiche Dokumentation.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
tonikae
User
Beiträge: 90
Registriert: Sonntag 23. Februar 2020, 10:27

Im einfachsten Fall so:

Code: Alles auswählen

import numpy as np
import matplotlib.pyplot as plt
tmp=kettenbruch=kettenwurzel=[]

print("Kettenbruchdarstellung")
x_kb=1
for i in range(1,11):
    x_kb=1+(1/x_kb)
    tmp.append(x_kb)
    print("i=%4d x=%.12f"% (i,x_kb))
kettenbruch=np.array(tmp)
    
print("Kettenwurzeldarstellung")
x_kw=1
tmp=[]
for i in range(1,11):
    x_kw=np.sqrt(1+x_kw)
    tmp.append(x_kw)
    print("i=%4d x=%.12f"% (i,x_kw))
kettenwurzel=np.array(tmp)

x=np.arange(kettenbruch.size)
plt.plot(x,kettenbruch,x,kettenwurzel)
plt.show()
Nur was zum angucken....
Aber wie schon anderweitig geraten, schaue dir die
Doku von Matplotlib an.Dann kannst du das so machen
wie du das haben willst.
Sirius3
User
Beiträge: 18274
Registriert: Sonntag 21. Oktober 2012, 17:20

@tonikae: warum werden tmp, kettenbruch und kettenwurzel alle mit der selben leeren Liste initialisiert, wobei letztebeiden gar nicht verwendet werden?
Die Umwandlung in ein array ist jetzt auch nicht zwingend, so dass man lesbarer das hier schreiben:

Code: Alles auswählen

import numpy as np
import matplotlib.pyplot as plt

print("Kettenbruchdarstellung")
x = 1
kettenbruch = []
for i in range(1,11):
    x = 1 + 1 / x
    kettenbruch.append(x)
    print("i=%4d x=%.12f"% (i, x))

print("Kettenwurzeldarstellung")
x = 1
kettenwurzel = []
for i in range(1,11):
    x = (1 + x) ** 0.5
    kettenwurzel.append(x)
    print("i=%4d x=%.12f"% (i, x))

x = np.arange(len(kettenbruch))
plt.plot(x, kettenbruch, x, kettenwurzel)
plt.show()
Benutzeravatar
__blackjack__
User
Beiträge: 14056
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Ich hatte am Wochenende mal wieder mit dem C64 rumgespielt und mir Tabellenkalkulation und Charts unter GEOS angeschaut. Dabei kam dieses Thema hier als Ideengeber gerade recht.

Berechnung der Zahlenreihen in GeoCalc:
Bild

Plotten in GeoChart:
Bild
🤓
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Antworten