Grafische Ausgabe von Zykloiden

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
Anakonda
User
Beiträge: 11
Registriert: Dienstag 26. Mai 2020, 11:44
Kontaktdaten:

Hallo zusammen,
als Anfänger in Python dachte ich mir, was "einfaches"zu realisieren. Doch nicht so einfach :o Ich möchte einen Rollkreis, wie er z.B. bei Zahnrädern entsteht, in einem Plot ausgeben. Also zuerst den jeweiligen Mittelpunkt des rollenden Rades bestimmen, dann mit dem Übersetzungsverhältnis bestimmen, um wieviel Grad sich die Position des drehenden Rades verändert hat usw.
Nun scheitere ich bereits bei der einfachen Darstellung des "Mittelpunktkreises" (s. Quellcode). Das sieht eher aus wie irgendwas mit Edding gemalt. Für Tips wäre ich sehr dankbar.

Code: Alles auswählen

import sys
import math
import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np

r_stator = int (input("Stator-d eingeben: "))
r_rotor = int (input("Rotor-d eingeben: "))

hypothenuse = r_rotor + r_stator

x_liste = []
y_liste = []
winkel = 0
for i in range(360):
    temp = []
    for j in range(1):
        j=round(math.cos(winkel),3) * hypothenuse
        temp.append(j)
        winkel = winkel + 1
    x_liste.append(temp)
winkel = 0

for k in range(36)0:
    temp = []
    for l in range(1):
        l=round(math.sin(winkel),3) * hypothenuse
        temp.append(l)
        winkel = winkel + 1
    y_liste.append(temp)
winkel = 0

plt.plot(x_liste, y_liste, 'r-') ######, linewidth = 0.05)
plt.show()
/code]
Recette en ligne www.viagrasansordonnancefr.com les soins aux patients
Sirius3
User
Beiträge: 17754
Registriert: Sonntag 21. Oktober 2012, 17:20

Ich weiß nicht, was Dir an der Graphik nicht gefällt. Kannst Du das näher beschreiben?
Einbuchstabige Variablennamen sind meist schlecht, vor allem, wenn sie l heißen.
Was die temp(eratur) da zu suchen hat, ist mir auch ein Rätsel, Abkürzungen in Variablnamen führen nur zur Verwirrung.
sys und numpy werden importiert, aber nicht genutzt.

Die for-Schleifen über j und l mit einem Element sind ziemlich witzlos, vor allem, weil j und l gar nicht benutzt werden, sondern durch andere Zahlen(-typen) überschrieben werden. Das ist alles sehr unverständlich.
i bzw. k sind auch immer identisch zu winkel. Es ist schlecht, dass die x- und y-Werte in zwei getrennten Schleifen berechnet werden. Gerundet wird nur bei der Ausgabe, nicht bei internen Ergebnissen.

Code: Alles auswählen

import math
import matplotlib.pyplot as plt

radius_stator = int(input("Stator-d eingeben: "))
radius_rotor = int(input("Rotor-d eingeben: "))
hypothenuse = radius_rotor + radius_stator

x_values = []
y_values = []
for winkel in range(360):
    x = math.cos(winkel) * hypothenuse
    y = math.sin(winkel) * hypothenuse
    x_liste.append(x)
    y_liste.append(y)

plt.plot(x_values, y_values, 'r-')
plt.show()
Anakonda
User
Beiträge: 11
Registriert: Dienstag 26. Mai 2020, 11:44
Kontaktdaten:

Hallo Sirius,
zusammen erst mal danke für die Antwort. Mir gefällt nicht an dem Bild, dass es so eine Art "dicker Ring" war. Nachdem ich mit den Zahlen in den j-Schleifen rumgespielt habe, komme ich schon etwas näher dran, wo ich hin will. Der Winkel wird doch allem Anschein nach in jedem Durchlauf um 1 inkrementiert. Wenn ich z.B. diesen Wert auf 30 erhöhe, sieht das ganze annähernd aus, wie es sein soll. Den part mit der temp[] habe ich aus einem matplotlib-Beispiel rausgefischt und weiter dran gebastelt. Wie schon gesagt, bin Anfänger. Ich würde mal ein Bild reinstellen, wenn ich wüsste, wo ich Anhänge hochladen kann.
Recette en ligne www.viagrasansordonnancefr.com les soins aux patients
Benutzeravatar
__blackjack__
User
Beiträge: 13114
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Anakonda: Bei imgur.com kann man beispielsweise Bilder hochladen die sich in Foren einbinden lassen.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Anakonda
User
Beiträge: 11
Registriert: Dienstag 26. Mai 2020, 11:44
Kontaktdaten:

Hi blackjack, danke für den Hinweis....allerdings kann ich nicht erkennen, wie ich mit Anhang was hier posten kann .[img]file:///C:/Users/frank/OneDrive/Bilder/zyklo.pdf[/img]
Recette en ligne www.viagrasansordonnancefr.com les soins aux patients
Benutzeravatar
__blackjack__
User
Beiträge: 13114
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Anakonda: Man kann bei imgur.com Bilder hochladen und die dann mit dem img-Tag hier einbinden. PDFs auf Deiner Festplatte kann natürlich aus gutem Grund niemand einfach so von aussen ansehen.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Anakonda
User
Beiträge: 11
Registriert: Dienstag 26. Mai 2020, 11:44
Kontaktdaten:

Hi nochmal, nach dem Tip von Blackjack habe ich jetzt mal 2 Bilder hochgeladen. So soll es nicht aussehenBild[/img], sondern soBild[/img]. Hoffe mal, dass es funzt. Ein Bild sagt ja mehr als 1000 Worte :wink:
Recette en ligne www.viagrasansordonnancefr.com les soins aux patients
Benutzeravatar
sparrow
User
Beiträge: 4195
Registriert: Freitag 17. April 2009, 10:28

Ich bin mal so frei die Tags richtig zu benutzen:

Falsch:
Bild

Richtig:
Bild
Anakonda
User
Beiträge: 11
Registriert: Dienstag 26. Mai 2020, 11:44
Kontaktdaten:

jop, genau so siehts aus. Nur schade, dass man in der Vorschau nicht erkennen konnte, was ist welches.
Recette en ligne www.viagrasansordonnancefr.com les soins aux patients
Anakonda
User
Beiträge: 11
Registriert: Dienstag 26. Mai 2020, 11:44
Kontaktdaten:

Sirius3 hat geschrieben: Dienstag 26. Mai 2020, 13:28 "Gerundet wird nur bei der Ausgabe, nicht bei internen Ergebnissen."
Dazu hab ich eine grundsätzliche Frage: Wenn ich schon bei internen Ergebnissen runde, geht zwar die mathematische Genauigkeit runter (klar), aber doch dafür die Geschwindigkeit während der Ausführung hoch, oder täusche ich mich da? Oder ist es so, dass die Zahl sowieso als "float" vorliegt und damit eh den Speicherplatz von keine Ahnung wieviel Bits in Anspruch nimmt?
Recette en ligne www.viagrasansordonnancefr.com les soins aux patients
__deets__
User
Beiträge: 14543
Registriert: Mittwoch 14. Oktober 2015, 14:29

Du gewinnst nichts durch Rundung. Das sind alles 64 Bit doubles.
Antworten