我有这个功能:
def g(R, r):
return (np.sqrt(2.0 * (R + r) / (r * R)) - (1 + np.sqrt(R)) / np.sqrt(R) -
np.sqrt(2.0 / (r * (1 + r))) * (1 - r) -
(1.0 / np.sqrt(R) - np.sqrt(2.0) * (1 - R) / np.sqrt(R * (1 + R))
- 1))
通过设置delta v_B = delta v_H
delta v_B
np.sqrt(2.0 * (R + r) / (r * R)) - (1 + np.sqrt(R)) / np.sqrt(R) -
np.sqrt(2.0 / (r * (1 + r))) * (1 - r)
和delta v_H
是
1.0 / np.sqrt(R) - np.sqrt(2.0) * (1 - R) / np.sqrt(R * (1 + R)) - 1
因此,我将g
写为delta v_b - delta v_H
。
现在这是我的功能和我在下面使用的代码:
import pylab
import numby as np
def g(R, r):
return (np.sqrt(2.0 * (R + r) / (r * R)) - (1 + np.sqrt(R)) / np.sqrt(R) -
np.sqrt(2.0 / (r * (1 + r))) * (1 - r) -
(1.0 / np.sqrt(R) - np.sqrt(2.0) * (1 - R) / np.sqrt(R * (1 + R))
- 1))
r = np.linspace(11.9, 16, 500000)
R = np.linspace(1, 20, 500000)
fig2 = pylab.figure()
ax2 = fig2.add_subplot(111)
ax2.plot(R, g(R, r), 'r')
pylab.xlabel('$R_1 = \\frac{r_C}{r_A}$')
pylab.ylabel('$R_2 = \\frac{r_B}{r_A}$')
pylab.xlim((0, 25))
pylab.ylim((0, 100))
pylab.show()
该函数应该在大约11.94
处渐近无穷大并且与y = x
附近的15.58
行相交
我怎样才能制作这样的情节?我不熟悉如何做到这一点,我不知道如何绘制这样的函数。
g
g(R, r)
的定义不合适吗?{{1}}如果是这样,如果不是这样,应该如何定义?
答案 0 :(得分:2)
这是调用隐式函数曲线,你可以使用contour
用参数levels=[0]
绘制它:
import numpy as np
import matplotlib.pyplot as plt
def g(R, r):
return (np.sqrt(2.0 * (R + r) / (r * R)) - (1 + np.sqrt(R)) / np.sqrt(R) -
np.sqrt(2.0 / (r * (1 + r))) * (1 - r) -
(1.0 / np.sqrt(R) - np.sqrt(2.0) * (1 - R) / np.sqrt(R * (1 + R))
- 1))
R, r = np.mgrid[1:30:200j, 1:100:200j]
Z = g(R,r)
plt.contour(R, r, Z, colors='k', levels=[0])
plt.show()