python - numpy.poly1d ,寻根优化,在 x 轴上移动多项式

标签 python optimization numpy scipy polygons

构建 n 阶多项式通常是一项简单的任务 并用 numpy 找到根:

import numpy
f = numpy.poly1d([1,2,3])
print numpy.roots(f)
array([-1.+1.41421356j, -1.-1.41421356j])

但是,假设您想要一个多项式:

f(x) = a*(x-x0)**0 + b(x-x0)**1 + ... + n(x-x0)**n

有没有简单的方法构造一个numpy.poly1d类型的函数 并找到根源?我试过 scipy.fsolve 但它非常不稳定,因为它在很大程度上取决于起始值的选择 在我的特殊情况下。

提前致谢 最好的祝福 滚滚

编辑:将“多边形”(错误)更改为“多项式”(正确)

最佳答案

首先,您确定是指多项式,而不是多边形吗?

就提供答案而言,您是否在所有术语中使用了相同的“x0”值?如果是这样,令 y = x - x0,求解 y 并使用 x = y + x0 得到 x。

如果需要,您甚至可以将其包装在 lambda 函数中。说,你想代表

f(x) = 1 + 3(x-1) + (x-1)**2

然后,

>>> g = numpy.poly1d([1,3,1])
>>> f = lambda x:g(x-1)
>>> f(0.0)
-1.0

f 的根由下式给出:

f.roots = numpy.roots(g) + 1

关于python - numpy.poly1d ,寻根优化,在 x 轴上移动多项式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6791159/

相关文章:

python - 动态更新颜色栏标题 - Plotly

python - python中的多维外积

python - 如何在 Python 3.3.5 中添加矩阵的对角线

python - 切片 3D 图像以创建 2D 图像

python - 在Python中从第n行读取大型CSV文件(不是从头开始)

python - 如何在保留顺序的同时从图表图像中获取数据?

optimization - 强化学习与运筹学

php - 有限制的结果总数

optimization - 如何编写通用的内存功能?

python - N 维直线网格每个单元的质心