Python - 找到2个图形的所有交点
Python - 找到2个图形的所有交点
我正在尝试找到两个图形的所有交点,并在最终的图上显示它们。我已经四处寻找并尝试了多种方法,但都没有得到我想要的结果。
目前,我正在尝试生成一个列表,其中交点将被列出,但我一直收到以下错误:
数组的真值有多个元素是模棱两可的。
请使用
a.any()
或a.all()
。
import numpy as np from scipy.optimize import fsolve import matplotlib.pyplot as plt x = np.arange(-7.0, 7.0, 0.05) def y(x): return np.sin(x)*(0.003*x**4 - 0.1*x**3 + x**2 + 4*x + 3) def g(x): return -10 * np.arctan(x) def intersection(x): if (y(x) - g(x)) == 0: print y.all(x) plt.plot(x, y(x), '-') plt.plot(x, g(x), '-') plt.show()
Python - 找到两个图形的所有交点
问题出现的原因:
这个问题的出现可能是因为用户想要找到两个函数图形的交点,并且使用Python来解决这个问题。用户在提问中提供了一个示例代码,但是在使用中遇到了问题。
解决方法:
下面是解决这个问题的方法:
1. 导入必要的库:
import numpy as np from scipy.optimize import fsolve import matplotlib.pyplot as plt
2. 定义函数和图形:
x = np.arange(-7.0, 7.0, 0.05) y = np.sin(x)*(0.003*x**4 - 0.1*x**3 + x**2 + 4*x + 3) g = -10 * np.arctan(x)
3. 定义交点函数:
def intersection(): idx = np.argwhere(np.isclose(y, g, atol=10)).reshape(-1) print idx plt.plot(x, y, '-') plt.plot(x, g, '-') plt.show()
4. 调用交点函数:
intersection()
这个方法使用了numpy库来生成x值的范围,并计算了两个函数的对应的y值。然后,使用scipy库中的fsolve函数来找到这两个函数的交点。最后,使用matplotlib库来绘制和显示这两个函数的图形以及交点。
希望这个方法可以帮助到用户解决问题。
Python - 找到两个图形的所有交点
问题的出现原因:该问题的出现是因为需要找到两个函数图像的所有交点。在给定的链接中,给出了找到两个函数图像交点的解决方法。
解决方法:使用scipy库中的fsolve函数,以及numpy库中的arange函数。首先定义两个函数y(x)和g(x),然后通过迭代给定的范围,使用fsolve函数找到函数y(x)和g(x)的交点,并将结果存储在一个列表中。
以下是解决方法的代码示例:
from scipy.optimize import fsolve import numpy as np rng = np.arange(-7.0, 7.0, 0.05) def y(x): return np.sin(x)*(0.003*x**4 - 0.1*x**3 + x**2 + 4*x + 3) def g(x): return -10 * np.arctan(x) def findIntersection(fun1,fun2,x0): return fsolve(lambda x : fun1(x) - fun2(x),x0) result = [] for x in rng: result.append(float(findIntersection(y,g,x)))
以上代码通过迭代范围rng中的每个值,找到了函数y(x)和g(x)的交点,并将结果保存在result列表中。