我目前正在研究一個小型 python 腳本,該腳本可用于使用徑向基函式方法對點進行插值。因此,我想繪制一個曲面,其中 Z 值由取決于 X 和 Y 的向量計算。
我需要實作的公式如下所示:

我目前的方法如下:
import numpy as np
import matplotlib.pyplot as plt
def phi(x):
return np.exp(- np.power(x, 2))
fig = plt.figure(figsize=(8,7))
ax = fig.add_subplot(projection='3d')
x = np.arange(0, 6, 0.25)
y = np.arange(0, 6, 0.25)
X, Y = np.meshgrid(x, y)
Z = 0.49 * phi(np.linalg.norm(np.array([[1,1], [X,Y]]))) \
0.79 * phi(np.linalg.norm(np.array([[2,3], [X,Y]]))) \
0.39 * phi(np.linalg.norm(np.array([[4,2], [X,Y]])))
surf = ax.plot_surface(X, Y, Z, cmap='viridis')
plt.xlim(0, 6)
plt.ylim(0, 6)
plt.show()
我傳遞給 phi() 函式的引數似乎有問題,但我不確定它是什么。那么如何正確計算 Z 值呢?
注意:我發現了一個類似的
uj5u.com熱心網友回復:
正如評論中提到的@Mateo Vial,最簡單的方法是使用畢達哥拉斯公式計算范數。作業代碼如下所示:
import numpy as np
import matplotlib.pyplot as plt
def phi(x):
return np.exp(- np.power(x, 2))
fig = plt.figure(figsize=(8,7))
ax = fig.add_subplot(projection='3d')
x = np.arange(0, 6, 0.25)
y = np.arange(0, 6, 0.25)
X, Y = np.meshgrid(x, y)
Z = 0.49 * phi(np.sqrt((1-X)**2 (1-Y)**2)) \
0.79 * phi(np.sqrt((2-X)**2 (3-Y)**2)) \
0.39 * phi(np.sqrt((4-X)**2 (2-Y)**2))
surf = ax.plot_surface(X, Y, Z, cmap='viridis')
plt.xlim(0, 6)
plt.ylim(0, 6)
plt.show()
現在結果是具有徑向基函式的良好插值。

轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/479484.html
標籤:Python 麻木的 matplotlib
上一篇:Numpy在陣列串列中查找索引出現在另一個陣列串列中
下一篇:從csv檔案中選擇某些列
