如何在Numpy中自定义多项式打印?

hpxqektj  于 2023-02-08  发布在  其他
关注(0)|答案(1)|浏览(116)

我有多项式的系数是用数值积分法计算的。在数学上,我用Gram-Schmidt算法从给定的概率分布函数产生正交多项式,这涉及到相关希尔伯特空间中的积分。因此,它们有时近似为非常接近零的浮点数。虽然我知道数学值是零。我想自定义打印,使这些值根本不打印。
例如,脚本:

import numpy as np
p = np.polynomial.Polynomial([1.23456789e-15, 1.0, 1.23456789e-13, 2.0])
print("p = ", p)

产生:

p =  1.23456789e-15 + 1.0·x¹ + 1.23456789e-13·x² + 2.0·x³

但我想打印:

p =  1.0·x¹ + 2.0·x³

我该怎么做呢?

bvn4nwqk

bvn4nwqk1#

最好的我设法想出的是编辑函数输出,删除数字是小和reformating:

coeffs = p.coef
formatted_coeffs = []
for i, coeff in enumerate(coeffs):
    if abs(coeff) >= 1e-5:
        formatted_coeffs.append("{:.1f}·x^{}".format(coeff, i))
print("p = ", " + ".join(formatted_coeffs))

这段代码打印你想要的东西:

p =  1.0·x^1 + 2.0·x^3

相关问题