我試圖找出樣條插值法如何scipy.interpolate.interp1d確定擬合/平滑函數的導數。從文檔中可以理解,interp1d如果將int(quadratic或cubic)傳遞給kind關鍵字,則適合樣條曲線。但是,如果我不提供任何派生信息,它如何確定派生是什么?我試圖遵循源代碼中的函數調用,但這只能使我進入隱秘的spleval函數,該函數似乎只是調用FITPACK。而且我不確定如何從他們的網站中找到關于FITPACK的信息...
1 回答

阿波羅的戰車
TA貢獻1862條經驗 獲得超6個贊
沒有明確規定結點處的樣條導數,它們由連續性/平滑度條件確定。我將以立方情況為例。您給出n個x值和n個y值。三次樣條具有4 *(n-1)個系數,在給定x值之間的(n-1)個區間中的每個區間上有4個。這些系數是從以下條件確定的:
樣條線在每個內部結處必須連續:這是(n-2)個方程,因為存在(n-2)個內部結。我們希望一個結的左右兩部分在該結處具有相同的值。
樣條曲線的一階導數在每個內部結處必須連續:這是(n-2)個方程。
樣條曲線的二階導數在每個內部結點處必須連續:這是(n-2)個方程。
樣條曲線必須與每個給定的y值匹配:這是n個方程式。
到目前為止,總數為4 * n-4個未知數的4 * n-6個方程。需要兩個附加方程式;最受歡迎的選擇是要求三階導數在最左邊和最右邊的內部結點處連續(這稱為“非結”條件)?,F在我們有了一個大小為4 * n-4的線性系統,可以求解這些系數。
不應將以上內容與Hermite插值法混淆,在Hermite插值法中,必須規定導數以及函數本身的值。這是一個不太常見的任務,據我所知,SciPy沒有內置工具。
添加回答
舉報
0/150
提交
取消