我正在尝试离散化微分算子作用于在一个圆周围使用有限多个点.
这是矩阵:
如果我们解方程我们应该得到和和.
当我在 numpy 中实现这个时,重新缩放似乎都是错误的。有人可以解释一下这背后的理论吗?
N = 100
A = np.zeros((N,N))
d = np.arange(N)
A[d,d] = -2
A[d,(d+1)%N]=1
A[d,(d-1)%N]=1
A
生成的矩阵就像我说的那样。这里.
array([[-2., 1., 0., ..., 0., 0., 1.],
[ 1., -2., 1., ..., 0., 0., 0.],
[ 0., 1., -2., ..., 0., 0., 0.],
...,
[ 0., 0., 0., ..., -2., 1., 0.],
[ 0., 0., 0., ..., 1., -2., 1.],
[ 1., 0., 0., ..., 0., 1., -2.]])
我想出了这个针对特征值的临时缩放将它们除以.
L = np.linalg.eig(-A)[0]/(2*np.pi)**2*N**2
L = np.round(L)
np.sort(L).astype(int)
结果看起来非常接近。我得到了完美正方形的序列。这是否意味着是正确的重新调整?
array([ 0, 1, 1, 4, 4, 9, 9, 16, 16, 25, 25,
36, 36, 48, 48, 63, 63, 79, 79, 97, 97, 116,
116, 137, 137, 160, 160, 184, 184, 209, 209, 235, 235,
263, 263, 291, 291, 320, 320, 350, 350, 381, 381, 412,
412, 443, 443, 475, 475, 507, 507, 538, 538, 570, 570,
602, 602, 633, 633, 663, 663, 693, 693, 722, 722, 751,
751, 778, 778, 804, 804, 830, 830, 853, 853, 876, 876,
897, 897, 916, 916, 934, 934, 951, 951, 965, 965, 978,
978, 988, 988, 997, 997, 1004, 1004, 1009, 1009, 1012, 1012,
1013])