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

Python 3.x 为什么选择不同的数据类型会产生不同的结果?,python-3.x,numpy,matrix,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

计算矩阵项时,分别定义为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
KG
Es
As
kl\u s
是参数

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

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


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

欢迎使用SO!正确格式化代码和变量非常重要,因为它可以帮助我们更快地理解问题。没有格式化,你会赶走潜在的帮助,因为破译你的要求需要更长的时间,我相信这不是你的目标。所以有关于格式化的帮助。。。“”。如果使用
complex128
,会发生什么情况?