Schleifen Problem beim Intervall

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
LeonK
User
Beiträge: 3
Registriert: Montag 8. August 2022, 01:09

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
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

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
LeonK
User
Beiträge: 3
Registriert: Montag 8. August 2022, 01:09

Super, vielen vielen Dank. Das rettet mir unglaublich viel Zeit!
LeonK
User
Beiträge: 3
Registriert: Montag 8. August 2022, 01:09

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
einfachTobi
User
Beiträge: 491
Registriert: Mittwoch 13. November 2019, 08:38

Ohne Kenntnis über die Struktur der Daten ist das schwierig zu beantworten. Das hier dürfte dich vermutlich weiterbringen: numpy.argmax().
Antworten