我正在尝试两个函数的一些计算/绘图。
使用
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 35, 50)
g = lambda x: 155 * (1 + (5/100)) ** (x - 1)
f = lambda x: np.where(x<=25, 200, 0)
plt.plot(x, f(x), '-')
plt.plot(x, g(x), '-')
idx = np.argwhere(np.diff(np.sign(f(x) - g(x)))).flatten()
plt.plot(x[idx], f(idx), 'ro')
plt.show()
print(x[idx],f(idx))
>>> [5.71428571] [200]
但是那个红点不在正确的位置(太靠左了)。
所以,假设问题是x值的数量,我改变x = np.linspace(0, 35, 100)
并得到>>>[6.01010101] [200]
这是更好的,但仍然有点小康,而且,在现实中,我想确切的解决方案。
但是,如果我改变x = np.linspace(0, 35, 200)
,我会突然得到>>>[6.15577889] [0]
和
...这对我来说毫无意义。
2条答案
按热度按时间yqyhoc1h1#
g(x)
的值:没有值等于200...提示:使用一些函数来解方程。。
nnvyjq4y2#
你的点的x坐标对我来说看起来很好,只是y位置不好。
看起来你正在绘制
f_i
(第i个索引),而不是f(x)
(x
的第i个位置上f
的求值)。请绘制
plt.plot(x[idx], f(x[idx]), 'ro')
,而不是f(idx)