Python求一个3*3矩阵对角线元素之和,正三角形python
我看了过去关于三对角的问题,但似乎没有人遇到我遇到的问题。我试图用,非均匀泊松方程的三对角刚度矩阵scipy.sparse.spdiags但似乎并没有因此收到矩阵。在定义泊松刚度(x0):
n=len(x0)-1 #元素的量(不是点数的量)x0,x1,x_N
h=np.zeros(N)
a=NP。零(^北部1)
b=np.zeros(N)
对于范围内的我(N):
h[I]=x0[I 1]-x0[I]#每个非均匀元素的长度
a[0]=1/h[0]
对于范围(1,N)中的我:
a[I]=1/h[I]1/h[I-1]#刚度矩阵的主对角线
a[N]=1/h[N-1]
对于范围内的我(N):
b[I]=-1/h[I]#刚度矩阵的上下对角线。
三对角线_数据=np.array([[a],[b],[b]])
位置=[0,1,-1]
刚度矩阵=scipy。稀疏。spdiags(三对角数据,位置,N ^ 1,N ^ 1)
打印刚度_矩阵
因此,当x0=[0,0.3,0.4,0.7,1]时,得到的刚度矩阵如下:
^{pr2}$
我的问题是为什么它是这样的,而不是矩阵形式?在
我尝试过更改数据类型以查看是否存在问题,但我会收到诸如(for.toarray())之类的错误:詹姆斯-MBP:泊松詹姆斯马龙$ python泊松1d.py
回溯(最近一次呼叫):
文件Poisson1d.py ,第33行,在
泊松刚度([0,0.3,0.4,0.7,1])
文件泊松1d。py ,第29行,泊松_刚度
刚度矩阵=scipy。稀疏。spdiags(三对角数据,位置,N ^ 1,N ^ 1).托阵列()
转换为数组中的文件"/Users/jamesmalone/anaconda/lib/python 2.7/site-packages/scipy/sparse/base。py”,第637行
返回self.tocoo().toarray(order=order,out=out)
转换为数组中的文件"/Users/jamesmalone/anaconda/lib/python 2.7/site-packages/scipy/sparse/首席运营官。py”,第275行
B.ravel(A ),fortran)
运行时错误:内部错误:无法解析数据类型
提前谢谢。在
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。