当前位置: 首页 > 知识库问答 >
问题:

Python根函数的精度

狄旻
2023-03-14

我试图用Python中的多项式根来近似Julia集合。特别是,我想找出多项式q(z)=z^2-0.5的第n次迭代的根。换句话说,我想找到n次组成的q(q(q))的根。为了得到许多采样点,我需要计算次多项式的根

我尝试过使用numpy的内置多项式类(它有一个根函数)和sympy的函数解算器来解决这个问题。在第一种情况下,当我选择大于100的度数时,精度会损失。复杂的计算需要很长时间。以下是我的代码:

p = P([-0.5,0,1])
for k in range(9):
    p = p**2-0.5
roots = p.roots()
plt.plot([np.real(r) for r in roots], [np.imag(r) for r in roots],'x')
plt.show()

abs_vector = [np.abs(p(r)) for r in roots]
max = 0
for a in abs_vector:
    if a > max:
        max = a
print(max)

上面的最大值在假设的根处给出了p的最大值。但是运行此代码会给我7.881370400084486e 296,它非常大。

如何在短时间内以良好的精度计算高次多项式的根?

共有1个答案

慕迪
2023-03-14

对于多项式< code>q的n次合成,可以迭代重建根

q = [1,0,-0.5]
n = 9

def q_preimage(w):
    c = q.copy()
    c[-1] -= w
    return np.roots(c)
rts = [0]
for k in range(n):
    rts = np.concatenate([q_preimage(w) for w in rts])

哪个返回

array([ 1.36444432e+00+0.00095319j, -1.36444432e+00-0.00095319j,
        1.40104860e-03-0.92828301j, -1.40104860e-03+0.92828301j,
        8.82183775e-01-0.52384727j, -8.82183775e-01+0.52384727j,
        8.78972436e-01+0.52576116j, -8.78972436e-01-0.52576116j,
        1.19545693e+00-0.21647154j, -1.19545693e+00+0.21647154j,
        3.61362916e-01+0.71612883j, -3.61362916e-01-0.71612883j,
        1.19225541e+00+0.21925381j, -1.19225541e+00-0.21925381j,
        3.66786415e-01-0.71269419j, -3.66786415e-01+0.71269419j,
...

或绘制

plt.plot(rts.real, rts.imag,'ob', ms=2); plt.grid(); plt.show()
 类似资料:
  • 问题内容: python允许使用[2,36]范围内的任何基数,从字符串到整数的转换,使用: 我正在寻找一个优雅的逆函数,该函数需要一个整数和一个底数并返回一个字符串 例如 我有以下解决方案: 注意:digit_to_char()适用于<= 169的基数,将“ z”后的ascii字符用作高于36的基数的数字 是否有python内置函数,库函数或更优雅的int(string,base)逆函数? 问题答

  • 问题内容: 我正在使用通过远程MySQL数据库存储其数据的C ++应用程序。 功能之一是尽可能保持远程数据的最新状态。为此,我使用NOW()函数获取上次更新时间,并且在更新记录时,将last_changed字段设置为NOW()。 现在可以正常工作,但问题是它的最大精度可达一秒。导致数十个重复条目,这浪费带宽,并且必须手动删除它们。 为了限制大部分膨胀,我希望有一个大于此精度的精度,最好是一个微秒(

  • 我有一个实用函数,它接受参数大小写并相应地返回值 我有一个使用上述函数的主函数 现在,我正在使用unittest对get\u data()模块进行单元测试。嘲弄我无法将值传递给id和类型。 我尝试使用side_effect函数和面向问题根据输入参数的不同值模拟get_sport_associated_value()。 问题2:使用mock或mock的最佳方法是什么。这个场景中的magicmock?

  • 问题内容: 我正在寻找一种以任意精度(例如点后50位数左右)计算平方根的方法。 在python中,可以使用Decimal轻松访问它: 看到强大的功能后,我浏览了文档,但没有发现任何类似的内容。 因此,我唯一的选择是编写某种数值计算方法,该方法将迭代地尝试计算答案吗? 问题答案: 这是我自己的平方根计算实现。在等待答案时,我决定尝试一下计算平方根的方法。它有很多方法,但最后我发现通过减法 pdf 链

  • 当 小数点后15位的数字被证明是错误的。(尽管很高兴给你的数字远远超过15位!) 在Python中,如何获得的十进制扩展中的第一个正确数字?

  • 我正在学习浮点格式(IEEE)。在单精度浮点格式中,提到尾数有24位,因此它具有6 1/2十进制数字的精度(根据书中“理解机器”),以及7.22十进制数字的精度。 我不明白精度的小数位数是怎么算出来的。有人能告诉我吗?