1
我想計算python中二階導數矩陣的特徵向量。根據數學,第一個向量應該等於0和pi之間的正弦函數,第二個向量等於0和2 * pi之間的正弦函數。因此,我的代碼看起來像具有適當符號的Numpy eigh-function
import numpy as np
from matplotlib import pyplot as plt
from scipy import sparse
import scipy.integrate as integrate
import scipy.special as special
import scipy
def create_second_deriv(size, h):
delta_matrix_2_second_diff = (np.eye(size, dtype=np.float)*-2+np.eye(size, k=-1,dtype=np.float)*1+np.eye(size, k=1,dtype=np.float)*1)
delta_matrix_2_second_diff /= (h*h)
return -1*delta_matrix_2_second_diff
delta_x = 0.001
x = np.linspace(0, 1, (int)(1/delta_x))
delta_matrix = create_second_deriv(len(x), delta_x)
w, v = scipy.linalg.eigh(delta_matrix)
plt.plot(v.tolist()[0])
plt.show()
plt.plot(v.tolist()[1])
plt.show()
現在,我所得到的輸出,是 作爲積爲第一特徵向量,並 作爲情節的第二個特徵向量。我已經知道不同值的符號是任意的,但在我的情況下,它們對於以後的處理很重要。有沒有辦法「翻轉」這些符號,使得結果值大致等於預期的函數?在這種情況下,僅僅使用abs()
-功能將無濟於事。