我正在尝试模拟一个特定的物理系统。为了传播解决方案,我需要能够乘以行列式= 1的矩阵,这些矩阵描述系统的每个部分。在下面的代码中,T(变量)是一个行列式为1的二维矩阵,i表示区域编号,其余内容不相关。
当我运行具有超过30个区域的系统的此代码时,最终的Msys的行列式不再等于1。我在整个计算过程中检查了Msys的行列式值,并且在前几次迭代中它为1,但然后开始偏离1。我尝试在创建数组T时将dtype = float64放入,以查看是否会提高精度并防止其崩溃,但我没有看到任何改进。
是否有任何方法可以编写代码以避免错误累积,或者可以增加numpy存储的小数位数,使得对于具有100多个区域的系统,误差可以忽略不计?
当我运行具有超过30个区域的系统的此代码时,最终的Msys的行列式不再等于1。我在整个计算过程中检查了Msys的行列式值,并且在前几次迭代中它为1,但然后开始偏离1。我尝试在创建数组T时将dtype = float64放入,以查看是否会提高精度并防止其崩溃,但我没有看到任何改进。
是否有任何方法可以编写代码以避免错误累积,或者可以增加numpy存储的小数位数,使得对于具有100多个区域的系统,误差可以忽略不计?
for i in range(n):
if i == 0:
Msys = T(L[i],i,k)
else:
Msys = numpy.dot(T(L[i]-L[i-1],i,k), Msys)
return Msys