为什么选择不同的数据类型会产生不同的结果?

时间:2019-10-21 21:05:35

标签: python-3.x numpy matrix

在计算矩阵的条目时,分别定义为float和numpy.complex64可获得不同的结果。由于某些条目是大数字(10 ^ 15),因此差异似乎很大。

import numpy as np
import sympy as sy
npc=int(2)
k_pnc=[[E1*A1*kl_1*sy.cot(kl_1*l1),-E1*A1*kl_1*sy.csc(kl_1*l1),0],[-E1*A1*kl_1*sy.csc(kl_1*l1),(E1*A1*kl_1*sy.cot(kl_1*l1)+E2*A2*kl_2*sy.cot(kl_2*l2)),-E2*A2*kl_2*sy.csc(kl_2*l2)],[0,-E2*A2*kl_2*sy.csc(kl_2*l2),E2*A2*kl_2*sy.cot(kl_2*l2)]]
KG=np.zeros((2*npc+2,2*npc+2),dtype=np.complex64)
for i in range(0,2*npc,2):
    KG[i:i + 3, i:i + 3] = k_pnc + KG[i:i + 3, i:i + 3]
KG[2*npc:2*npc+2,2*npc:2*npc+2]=KG[2*npc:2*npc+2,2*npc:2*npc+2]+E1*A1*kl_1*np.array([[sy.cot(kl_1*l1),-sy.csc(kl_1*l1)],[-sy.csc(kl_1*l1),sy.cot(kl_1*l1)]])
KG[-1,-1]=KG[-1,-1]+ sy.I*E1*A1*kl_1

KGEsAs kl_s是参数。

矩阵的末尾需要一个元素,它是一个复数。当我开始获得不自然的结果时,我删除了添加到最后一个元素KG[-1,-1]上的复数,并将其与dtype=float进行比较,从而得出了不同的结果。

选中时,KG矩阵在每个操作中具有不同的值,即使计算结果相同。

为什么选择不同的数据类型会产生不同的结果?

0 个答案:

没有答案