1

基本上就是标题所说的。我得到了我认为是在我的代码中传播的数字错误,因此我试图通过将所有类型更改为高精度的 mpcs 来改进。但是,我的一些计算是象征性的,sympy 似乎不喜欢 mpcs。

val += (1.0/2.0)*(1.0/kConversionFactor)**(ci) * ( A*k**(ln-lm+2*ci) - 1.0j*B*k**(ln+lm+1+2*ci) )
TypeError: unsupported operand type(s) for *: 'mpc' and 'Symbol'

k 是 sympy 符号 A 和 B 是 mpc 的

4

1 回答 1

0

更新了以下评论:

val += (1.0/2.0)*(1.0/kConversionFactor)**(ci) * (mpcToSympy(A)*k**(ln-lm+2*ci) - sy.I*mpcToSympy(B)*k**(ln+lm+1+2*ci) )
....
def mpcToSympy(mpc_):
    return ( sy.Float(str(mpc_.real),DPS) + sy.Float(str(mpc_.imag),DPS)*sy.I )

请参见此处:从 mpf 转换为 Sympy Float 而不会丢失精度

于 2016-05-05T20:46:08.503 回答