Interpolation mit scipy

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
DRXD1000
User
Beiträge: 1
Registriert: Freitag 12. März 2021, 15:05

Hallo Zusammen,

ich habe vor ca. 2 Wochen mit Python angefangen und bearbeite gerade eine Übungsaufgabe und bin mit meinem (sehr bescheidenen) Latein am Ende.

Die Aufgabe ist ein Polynom 10 Grades mithilfe der SciPy-Routine lagrange zu erstellen.

Mit x-Werten von 0-1 in 0.1er Schritten. Die Funktion ist sin^2(4*pi*x). Ich soll das Polynom an den Stützstellen 0:1:0.1 berechnen.

Hier mein Code:

import numpy as np
import matplotlib.pyplot as plt
from scipy import interpolate

x=np.arange(0,1.1,0.1)
A=np.zeros([11,2])
A[:,0]=x
y=np.sin(x*4*np.pi)**2
A[:,1]=y

plt.plot(A[:,0],A[:,1],'o',label="Sinus",c="k")

p10=interpolate.lagrange(A[0:1.0:0.1,0],A[0:1.0:0.1,1])
xnew=np.arange(0,1,0.1)
ynew=np.arange(-7,3,1)
plt.plot(xnew,ynew,label="Polynom Ordnung 10",linestyle="-",c="b")
plt.legend(loc="lower right")
plt.show()

Ich bekomme die Fehlermeldung:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-18-03d1a69fdc5a> in <module>
11 plt.plot(A[:,0],A[:,1],'o',label="Sinus",c="k")
12
---> 13 p10=interpolate.lagrange(A[0:1.0:0.1,0],A[0:1.0:0.1,1])
14 xnew=np.arange(0,1,0.1)
15 ynew=np.arange(-7,3,1)

TypeError: slice indices must be integers or None or have an __index__ method

Ich weiß nicht wie ich hier zu einer Lösung kommen soll.

PS: Die Achsenwerte sind vorgeben.

Es wäre super wenn mir hier jemand helfen kann :)

Vielen Dank und liebe Grüße
Benutzeravatar
Dennis89
User
Beiträge: 1121
Registriert: Freitag 11. Dezember 2020, 15:13

Hallo,

du versuchst auf den Index '0:1.0:0.1,0' von 'A' zuzugreifen. Die Angabe ist nicht zulässig. Was möchtest du denn damit erreichen?
Abgesehen von dem Fehler, wird dein berechneter 'p10' gar nicht weiter im Code benutzt.

Müsste das nicht so aussehen?

Code: Alles auswählen

import numpy as np
import matplotlib.pyplot as plt
from scipy import interpolate

x=np.arange(0,1.1,0.1)
A=np.zeros([11,2])
y=np.sin(x*4*np.pi)**2
A[:,1]=y


p10=interpolate.lagrange(x ,A)
plt.plot(p10,label="Polynom Ordnung 10",linestyle="-",c="b")
plt.legend(loc="lower right")
plt.show()

Grüße
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
Antworten