【发布时间】:2017-03-27 18:18:19
【问题描述】:
我想在 python 中计算二阶导数矩阵的特征向量。根据数学,第一个向量应该等于 0 到 pi 之间的正弦函数,第二个向量应该等于 0 到 2*pi 之间的正弦函数。因此我的代码看起来像
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()-function 将无济于事。
【问题讨论】:
标签: python numpy eigenvector