gpt4 book ai didi

python - 找到多项式曲线交点的有效方法?

转载 作者:太空宇宙 更新时间:2023-11-04 03:54:39 25 4
gpt4 key购买 nike

np.polyfit() 的拟合返回了几个多项式表达式。然后,我使用 matplotlib 绘制多项式曲线:

y_fit = np.arange(min(y), max(y), .1) # use more points for a smoother plot
x_fit = p[0](y_fit)
axes.plot(x_fit, y_fit, '-', color='green')

我得到的是这个

Polynomial Curves

它们实际上是一个 channel 的边界。 我希望在绿色封闭多边形内看到一个蓝色封闭多边形。使用人类智能,很清楚如何将它们相交并移除多余的部分。

尝试过的一个简单粗暴的方法是用fsolve()求解成对耦合非线性方程。 但是,这是非常不可行的,因为我有很多多项式曲线,因此成对求解它们太昂贵了。此外,很明显并非所有交叉点都很重要。 (有些路口甚至几乎没有意义!)

那么我是否可以有效地做到这一点(获取关键交叉点)?

最佳答案

您可以通过求根来找到多项式曲线的交点:

import numpy as np

# fake data
x = np.linspace(0, 4, 20)
y1 = np.cos(x)
y2 = np.sin(x)

# polynomial fits
p1 = np.polynomial.Polynomial.fit(x, y1, 3)
p2 = np.polynomial.Polynomial.fit(x, y2, 3)

# find roots
x_0 = (p1 - p2).roots()
print(x_0)

# select roots in specific range only
x_0 = x_0[(x_0 > 0) & (x_0 < 4)]

# plot
xx = np.linspace(0, 4, 2000)

import matplotlib.pyplot as plt
plt.plot(x, y1, 'b.', x, y2, 'g.')
plt.plot(xx, p1(xx), xx, p2(xx))
plt.plot(x_0, p1(x_0), 'ko')
plt.show()

对于通过 np.polyfit 获得的多项式,使用 np.roots

关于python - 找到多项式曲线交点的有效方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19472853/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com