Kräfteberechnung per Python
Ja das ist richtigCaskuda hat geschrieben: Freitag 10. Juli 2020, 22:13 @cck1989:
zip ist eine wunderschöne Funktion, um Listen zusammenzufassen, allerdings bin ich selbst noch weit davon entfernt alle Finessen zu meistern.
Vermutlich wirst du dir die math.radians() - Methode ansehen wollen, um die Winkel in Bogenmaß zu bekommen.
Es ist eine Weile her, aber du willst die Kraft jeweils in eine X- und Y-Achsen Projektion aufteilen?
Gruß
Fynn
Fynn
Erwirke ich durch den input namens „force“ und „tangle“ in der Liste „forces “ 2 eigene Listen, welche sich durch force und tangle ergebenSirius3 hat geschrieben: Samstag 11. Juli 2020, 09:43 @cck1989: wie Caskuda schon bei seinem letzten Beispiel geschrieben hat, solltest du erst gar nicht zwei getrennte Listen haben, sondern gleich im richtigen Format die Werte einlesen. Dann braucht man auch kein zip.
Wenn beide Inputs den selben Namen haben, dann speichert er mir die Werte zwischen eine gemeinsam eckigen Klammer?
Gruß
Fynn
Fynn
Das habe ich jetzt gebaut, was sagt ihr dazu,
ich habe es nicht umgesetzt bekommen alles bei einer Liste zu lassen.
ich habe es nicht umgesetzt bekommen alles bei einer Liste zu lassen.
Code: Alles auswählen
# Rechnerische Addition von Kräften
import math
from math import pi
from math import sin
from math import cos
from math import atan
from math import radians
anzahl_kraefte = int(input("Wie viele Kräfte sollen addiert werden?"))
forces = list()
tangles = []
print ("Bitte tragen Sie Ihre Kräfte ein.")
print()
for _ in range(anzahl_kraefte):
force = input('Betrag der Kraft: ')
tangle = input('Der zugehörige Winkel zur Kraft: ')
forces.append(float(force))
tangles.append(float(tangle))
#for force in forces:
#print(f'Kraft {force}')
#for tangle in tangles:
#print(f'Winkel {tangle}')
tangle_float_list = []
for item in tangles:
tangle_float_list.append(float(item))
#print (tangle_float_list)
bogenlaenge = []
for x in tangle_float_list:
bogenlaenge.append(math.radians(x))
#print(bogenlaenge)
list_of_sinus = []
list_of_cosinus = []
for y in bogenlaenge:
list_of_sinus.append(sin(y))
list_of_cosinus.append(cos(y))
#print (list_of_cosinus, list_of_sinus)
force_x = []
force_y = []
for i in range(len(forces)):
force_y.append(round(forces[i]*list_of_sinus[i],3))
force_x.append(round(forces[i]*list_of_cosinus[i],3))
print()
print("Die Kraft der y-Achse betragen")
print(round(sum(force_y),3),"N")
y_force = (round(sum(force_y),3))
print("Die Kraft der x-Achse betragen")
print(round(sum(force_x),3),"N")
x_force = (round(sum(force_x),3))
print()
print("Die resultierende Kraft beträgt")
print(round(math.sqrt(round(((sum(force_x)))**2 + (((sum(force_y)))**2),3)),3),"N")
print("Der Winkel der resultierenden Kraft beträgt")
if y_force > 0 and x_force > 0:
a =(round(atan(y_force / x_force),2)*180/pi)
print(round((a),2))
if y_force > 0 and x_force < 0:
b = (round(atan(y_force / x_force),2)*180/pi)
print(round((b+180),2))
if y_force < 0 and x_force > 0:
c = (round(atan(y_force / x_force),2)*180/pi)
print(round((c+360),2))
if y_force < 0 and x_force < 0:
d = (round(atan(y_force / x_force),2)*180/pi)
print(round((d+180),2))
Gruß
Fynn
Fynn
Das sind doch viel zu viele Listen, die gar nicht gebraucht werden. Man muss nicht jeden kleinen Rechenschritt zwischenspeichern. tangle_float_list ist identisch zu tangles. Gerundet wird erst bei der Ausgabe und zwar mit Formatangaben.
Code: Alles auswählen
# Rechnerische Addition von Kräften
from math import sin, cos, atan2, radians, degrees
anzahl_kraefte = int(input("Wie viele Kräfte sollen addiert werden?"))
forces = []
print ("Bitte tragen Sie Ihre Kräfte ein.")
print()
for _ in range(anzahl_kraefte):
force = input('Betrag der Kraft: ')
tangle = input('Der zugehörige Winkel zur Kraft: ')
forces.append((float(force), float(tangle)))
cartesian_forces = []
for force, tangle in forces:
angle = radians(tangle)
cartesian_forces.append((force * cos(angle), force * sin(angle)))
force_y = sum(y for x, y in cartesian_forces)
force_x = sum(x for x, y in cartesian_forces)
force = (force_x ** 2 + force_y ** 2) ** 0.5
angle = degrees(atan2(force_y, force_x))
print()
print("Die Kraft der y-Achse betragen")
print(f"{force_y:.3f}N")
print("Die Kraft der x-Achse betragen")
print(f"{force_x:.3f}N")
print()
print("Die resultierende Kraft beträgt")
print(f"{force:.3f}N")
print("Der Winkel der resultierenden Kraft beträgt")
print(f"{angle:.3f}N")