Seite 1 von 1

Schleifen Problem beim Intervall

Verfasst: Montag 8. August 2022, 01:17
von LeonK
Hallo,

ich bin leider im Programieren noch nicht so vertraut und ich benötige die Hilfe für ein Uni Projekt.
Ich möchte eine Funktion berechnen mit einer Variablen im Intervall von 100 bis 150. Danach möchte ich diese Funktion plotten in einen Graphen. leider akzeptiert er mein Intervall irgendwie nicht:

ValueError Traceback (most recent call last)
~\AppData\Local\Tem in <module>
1 t_1 = np.linspace(100,150) #Grenzen
2 plt.title('Verlauf der Nutzlastmasse über Boosterbrenndauer') #Title der Grafik
----> 3 plt.plot(t_1, Booster_thrust(t_1)) #Darstellen der Grafik
4 plt.xlabel('Brenndauer [s] ') #Benennung der x-Achse
5 plt.ylabel('Nutzlast [kg]') #Bennenung der y-Achse

~\AppData\Local\Tem in Booster_thrust(t_1)
1 def Booster_thrust(t_1):
2 mp_B = 1803.45
----> 3 if ((t_1 >=100) and (t_1 <= 150)):
4 m_T_B = mp_B * t_1
5 else:
raise ValueError('Invalid number')
return m_T_B
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()


Ich wäre über die Hilfe sehr Dankbar. :geek:
Viele Grüße
Leon

Re: Schleifen Problem beim Intervall

Verfasst: Montag 8. August 2022, 07:11
von Sirius3
Du hast kein Interval, sondern einen Vektor mit 50 Zahlen zwischen 100 und 150.
Im allgemeinen kann man die Frage sind die Zahlen größer als 100 nicht beantworten, oder was wäre die Antwort ob 1, 3 und 7 größer als 5?
Und deshalb muß man bei solchen Fragen angeben, ob man ›alle Zahlen‹ oder ›mindestens eine Zahl‹ meint.
In dem Punkt ist die Fehlermeldung ziemlich ausführlich.
Wenn ich raten soll, meintest Du wahrscheinlich das:

Code: Alles auswählen

def Booster_thrust(t_1):
    if not ((t_1 >=100).all() and (t_1 <= 150).all()):
        raise ValueError('Invalid number')
    mp_B = 1803.45
    m_T_B = mp_B * t_1
    return m_T_B

Re: Schleifen Problem beim Intervall

Verfasst: Montag 8. August 2022, 11:35
von LeonK
Super, vielen vielen Dank. Das rettet mir unglaublich viel Zeit!

Re: Schleifen Problem beim Intervall

Verfasst: Montag 8. August 2022, 12:36
von LeonK
Dann nochmal eine Frage:

Ich habe die Funktion weiter geschrieben und hab jetzt einen quadratischen Graphen. Den y_Max haben ich schon. Wie kann ich nun den x-Wert davon ermitteln?
m_N_max = max(Booster_payload(t_1))

Danke für die Hilfe

Re: Schleifen Problem beim Intervall

Verfasst: Montag 8. August 2022, 14:28
von einfachTobi
Ohne Kenntnis über die Struktur der Daten ist das schwierig zu beantworten. Das hier dürfte dich vermutlich weiterbringen: numpy.argmax().