Flächenschwerpunkt berechnen

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Halberhai
User
Beiträge: 2
Registriert: Mittwoch 23. November 2016, 18:56

Flächenschwerpunkt berechnen

Beitragvon Halberhai » Mittwoch 23. November 2016, 19:14

Ich habe ein Program geschrieben, dass den Flächenschwerpunkt mit Hilfe von Trapezflächen bestimmt.
Allerdings bin ich nicht ganz glücklich über das Gesamtergebnis.
Bei einem einfachen Beispiel: Dreieck mit der Höhe 1 berechnet das Programm einen wert von 0.3466.. eigentlich sollten der Schwerpunkt bei 0.333.. liegen. Gibt es in Python eine andere Möglichkeit den Flächenschwerpunkt zu berechnen?
#### das Programm###############
  1. def Schwerpunkt_y(t,Sigma):
  2.     dAxdY_liste=[];dA_Liste=[];
  3.    
  4.     for i in range(len(t)-1):
  5.         #berechen den Flaecheninhalt eines Trapez
  6.         dSigma=(Sigma[i+1]+Sigma[i])/2
  7.         dZeit=(t[i+1]-t[i])
  8.         dA=dSigma*dZeit
  9.         #berechne den Schwerpunkt fuer jedes Trapez
  10.         if Sigma[i+1]>=Sigma[i]:
  11.             print 'Steigend'
  12.             y=Sigma[i]/2+(Sigma[i+1]-Sigma[i])/3
  13.         if Sigma[i+1]<Sigma[i]:
  14.             print 'Fallend'
  15.             y=Sigma[i+1]/2+(Sigma[i]-Sigma[i+1])/3    
  16.         #bilde das Produkt aus dA und dY
  17.         dAxdY_liste.append(y*dA)
  18.         dA_Liste.append(dA)
  19.     #berechne die Gesamtflaeche    
  20.     A=sum(dA_Liste)
  21.     print A    
  22.     Integral=sum(dAxdY_liste)
  23.     #berechne den Schwerpunkt
  24.     Ys=1/A*Integral  
  25.     return(Ys)
Zuletzt geändert von BlackJack am Mittwoch 23. November 2016, 22:24, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
Sirius3
User
Beiträge: 6102
Registriert: Sonntag 21. Oktober 2012, 17:20

Re: Flächenschwerpunkt berechnen

Beitragvon Sirius3 » Mittwoch 23. November 2016, 19:52

@Halberhai: wie sieht denn Dein Algorithmus aus, den Du hier versuchst umzusetzen? Was sind die Eingabewerte? Was bedeutet Zeit bei einem Flächeninhalt?
Halberhai
User
Beiträge: 2
Registriert: Mittwoch 23. November 2016, 18:56

Re: Flächenschwerpunkt berechnen

Beitragvon Halberhai » Mittwoch 23. November 2016, 20:52

Ich habe unterschiedliche Signale, bei denen ich den Höhenschwerpunkt bestimmen muss. ich dachte, dass ich das ganz gut mit einem Dreieckssignal überprüfen könnte.
So sehen meine Listen dazu aus:
Zeit=[0, 0.003, 0.006, 0.009, 0.012, 0.015, 0.018, 0.021, 0.024, 0.027, 0.03]
höhe=[ 0, 0.2 ,0.4, 0.6, 0.8, 1, 0.8, 0.6 ,0.4, 0.2, 0.00]
Ich versuche, die Fläche unter dem Höhenzug in kleine rechteckige Trapeze zu zerlegen, in diesem Fall wären es 10 Stück. Die Flächeninhalte bekommen ich gut hin allerdings den Flächenscherpunkt nicht so. Der Gesamtschwerpunkt bildet sich durch das Integral, des Produktes aus den infinitesimalen Flächen und den Einzelschwerpunkten, dividiert durch die Gesamtfläche.
Sirius3
User
Beiträge: 6102
Registriert: Sonntag 21. Oktober 2012, 17:20

Re: Flächenschwerpunkt berechnen

Beitragvon Sirius3 » Donnerstag 24. November 2016, 21:22

@Halberhai: Rechtecke sind die einzigen rechteckigen Trapeze. Was Du wohl meinst, sind Rechtecke auf die man noch Dreiecke gesetzt hat. Das ist aber eigentlich auch egal, solange man das Integral von f(t)²/2 dt ausrechnet, hier halt Abschnittweise definiert als fᵢ(t) = hᵢ − (hᵢ₊₁ − hᵢ)∙(1 − (t−tᵢ) / (tᵢ₊₁ − tᵢ))

  1. def calculate_center_of_mass(t, h):
  2.     area = 0
  3.     weighted_area = 0
  4.     points = zip(t, h)
  5.     t1, h1 = next(points)
  6.     for t2, h2 in points:
  7.         area += (h2 + h1) * (t2 - t1) / 2
  8.         weighted_area += (h2*h2 + h1*h2 + h1*h1) * (t2 - t1) / 6
  9.         t1, h1 = t2, h2
  10.     return weighted_area / area

Zurück zu „Wissenschaftliches Rechnen“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder