Ich schreibe gerade ein Programm, das ein Polynom grafisch darstellt und den Bereich unter der Kurve zwischen zwei Endpunkten mit der 3/8-Regel von Simpson schattiert und dann diese Information auf dem Graphen ausgibt. Gegenwärtig arbeitet das Programm richtig für ein Polynom ("(x - 3) * (x - 5) * (x - 7) + 85") zwischen zwei Endpunkten (2 und 9). Wenn das Programm jedoch eine Eingabe für entweder das Polynom oder einen der beiden Endpunkte mit dem Eingabebefehl akzeptiert, wird das Programm eingefroren und stürzt ab, ohne ein Diagramm zu erstellen. Dies geschieht auch, wenn die aktuellen Nummern erneut eingegeben werden. Unten ist der Code:Python-Programm friert ein und schließt beim Eingeben einer Eingabe?
Hier ist die Basis des Codes
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.patches import Polygon
Hier I das Polynom definieren func (x)
def func(x):
return (x - 3) * (x - 5) * (x - 7) + 85
hier zu definiere ich die Funktion, mit der die Berechnung Bereich unter der Kurve mit Simpson-Regel
Hier definiere ich die Endpunkte zwischen denen zu integ
Ratea, b = 2, 9 # integral limits
Hier sind ein paar weitere Definitionen für Bequemlichkeit
x = np.linspace(0, 10) #Generates 100 points evenly spaced between 0 and 10
y = func(x) #Just defines y to be f(x) so its ez later on
fig, ax = plt.subplots()
plt.plot(x, y, 'r', linewidth=2)
plt.ylim(ymin=0)
final_integral = simpson(lambda t:func(t), a, b, 100000)
Hier habe ich den schraffierten Bereich konstruieren
# Make the shaded region
ix = np.linspace(a, b)
iy = func(ix)
verts = [(a, 0)] + list(zip(ix, iy)) + [(b, 0)]
poly = Polygon(verts, facecolor='0.9', edgecolor='0.5')
ax.add_patch(poly)
Hier habe ich die integrale Notation in der Grafik drucken
plt.text(0.5 * (a + b), 30, r"$\int_a^b f(x)\mathrm{d}x$",
horizontalalignment='center', fontsize=20)
Hier drucke ich die Fläche unter der Kurve berechnet, indem die simpson 3/8ths Regel auf dem Graphen
ax.text(0.25, 135, r"Using Simpson's 3/8ths rule, the area under the curve is: ", fontsize=20) #r denotes a raw string
ax.text(0.25, 114, final_integral , fontsize=20) #prints the value of the
integral defined using simpson's 3/8ths prior
Hier fertig Konstruieren ich die Grafik
plt.figtext(0.9, 0.05, '$x$')
plt.figtext(0.1, 0.9, '$y$')
ax.spines['right'].set_visible(False) #no dashes on axis
ax.spines['top'].set_visible(False)
ax.xaxis.set_ticks_position('bottom')
ax.set_xticks((a, b))
ax.set_xticklabels(('$a$', '$b$'))
ax.set_yticks([])
plt.show()
Doch wenn ich die Zeile, wo die Endpunkte gelesen werden definiert 'a, b = int (Eingabe ("gebe deine Endpunkte im Format 2,9 ein")) # integral limits', das Programm errors out as shown.
Jede Hilfe wäre willkommen. Ich bemühe mich, das Dilemma zu verstehen, also appoligiere ich, dass ich keine weiteren Informationen zur Verfügung stelle.