import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
#函数表达式,以cos函数和一元一次方程为例
x = np.linspace(-np.pi, np.pi, 1000)
a = np.random.randn(1)
b = np.random.randn(1)
c = np.random.randn(1)
f1 = a * x + b
f2 = np.cos(x + c)
#寻找交点位置
jd_loc = np.argwhere(np.diff(np.sign(f1 - f2))).flatten()
#返回满足条件的索引
for i in jd_loc:
plt.annotate("交点", xy=(x[i],f1[i]), xytext=(x[i],f1[i] + 0.5), arrowprops=dict(arrowstyle="->"))
#作图
plt.plot(x, a * x + b)
plt.plot(x, np.cos(x + c))
plt.show()
运行结果
jd_loc = np.argwhere(np.diff(np.sign(f1 - f2))).flatten()
使用numpy库中的函数来计算f1-f2的值,将结果传递给 sign 函数返回符号,然后使用 diff 函数计算符号数组的差异,并使用 argwhere 找到差异位置并存到jd_loc