2017-03-05 80 views
1

我正在尝试使用设备或找到一种方法,该方法允许我绘制两个函数的比率值(我无法想到正确的单词) 。例如,它将类似于找到具有两个因变量xyf(x)= g(y)的两个函数的根。但我想根据它们的功能绘制xy之间的关系。绘制两个函数相关值的“关系”

例如:

enter image description here

这将是象设法看到这些值匹配的相同的N个(> M_h)= N(> M_star)。查看它们的x值(从该图像中截取的)匹配y值的位置,然后绘制它们的关系,例如M_h(M_star)或M_star(M_h)。

我没有任何示例代码,因为我不知道如何启动这样的方法。

如果他们需要更详细的阐述,请告诉我。

回答

1

画两条影响无关变量xy空调上的功能f(x)g(y)之间的关系可以通过在f(x)-g(y) = 0绘制轮廓来进行。

enter image description here

import numpy as np 
import matplotlib.pyplot as plt 

f = lambda x: x**2 
g = lambda y: np.sqrt(y) 

x = np.linspace(0,2,101) 
y = np.linspace(0,10,101) 

fig, (ax, ax2, ax3) = plt.subplots(ncols=3, figsize=(10,4)) 

ax.plot(x, f(x)) 
ax.plot([1.5],[f(1.5)], marker="o") 
ax2.plot(y, g(y)) 
ax2.plot([f(1.5)**2],[f(1.5)], marker="o") 

#create a meshgrid from the x and y array 
X,Y = np.meshgrid(x,y) 
#plot the contour f(X)-g(Y) = 0 
c = ax3.contour(X,Y, f(X)-g(Y), 0) 
ax3.plot([1.5],[f(1.5)**2], marker="o") 

ax.set_ylim([0,4]) 
ax2.set_ylim([0,4]) 
ax.set_xlabel("x") 
ax.set_ylabel("f(x)") 
ax2.set_xlabel("y") 
ax2.set_ylabel("g(y)") 
ax3.set_xlabel("x") 
ax3.set_ylabel("y") 

ax3.legend(handles=[c.collections[0]], labels=["f(x) = g(y)"]) 
plt.tight_layout() 
plt.show()