Python - 找到2个图形的所有交点

17 浏览
0 Comments

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()

0
0 Comments

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库来绘制和显示这两个函数的图形以及交点。

希望这个方法可以帮助到用户解决问题。

0
0 Comments

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列表中。

0