使用Python查找两条曲线的三个交点

时间:2015-12-29 10:41:55

标签: python numpy intersection point curves

我试图找到两条曲线的三个交点。一个是v1(u) = u - u^3,另一个是v2(u) = (u-a0)/a1(其中a0和a1是一些参数)。到目前为止,我已经设法弄清楚如何绘制交叉点:

import matplotlib.pyplot as plt
import numpy as np
u = np.linspace(-2,2,1000)
a0 = 0
a1 = 2
v1 = u - u**2
v2 = (u - a0)/a1
plt.plot(u,v1, 'g-')
plt.plot(u,v2, 'b-')
idx = np.argwhere(np.isclose(v1, v2, atol=0.1)).reshape(-1)
plt.plot(u[idx], v1[idx], 'ro')
plt.show()

问题是如何获得三个交叉点的u值。

1 个答案:

答案 0 :(得分:1)

求解二次方程ang得到这两个(或一个或零,取决于系数;但不是三个,显然)交点:

enter image description here

但如果您正在寻找一种计算绝对自定义函数交叉点的方法,那么唯一的方法就是数值方法,请参考Root-finding algorithms

要通过分析方法求解三次方程式,您可以尝试使用Cardano's method或Wiki上描述的其他方法。