Ich versuche, eine Funktion zu zeichnen, die unterschiedliche Verhalten haben, abhängig von den Werten der X-Achse. Für Werte der x-Achse (Variable 'ec'), die kleiner als 2.0 sind, wirkt sie in einer Richtung, und für größere Werte wirkt sie anders.Probleme mit einer 'für' Iteration innerhalb einer Funktion
import numpy as np
import matplotlib.pyplot as plt
ec = np.linspace(0., 3.,20) #range of 'x' axis values
def ten_def(x):
for i in ec:
if i <= 2.:
return 0.85*x*(1-(1-(ec/2))**2) #behavior for ec < than 2.0
else:
return 0.85*x #behavior for ec > 2.0
fcd = float(input('Fck (MPa): '))/1.4
plt.plot(ec, ten_def(fcd), 'b-', ec,(ec*0)+fcd*0.85,'r-')
plt.title('Tensão-deformação')
plt.xlabel('Deformação (‰)')
plt.ylabel('Tensão (MPa)')
plt.show()
Der Plotteil des Codes funktioniert. Aber es zeichnet eine Kurve auf, die das gleiche Verhalten für die ganze Parzelle hat (es berücksichtigt ec < 2.0 die ganze Zeit). Was mache ich falsch?
Sie das erste Mal gewünschte Ergebnis zurück, das ist das Ende der Funktion. Es ist, als würde man jemandem einen Boten schicken. Sobald der Bote mit der Antwort zu Ihnen zurückkommt, sind alle anderen Antworten nutzlos, weil der Bote schon weg ist. – zondo