我有一系列由两个变量theta
和描述的相关函数的近似值Dw
。相关函数被合并到一个更大的方程中,其中有 4 个附加变量。这些变量是:gyroI
、gyroS
、r
和dec
。这 4 个变量都是我拥有的可测量的量。我把它写到一个函数中,并将单个输出值的依赖关系绘制为 和 的依赖theta
关系Dw
。
import numpy as np
import matplotlib.pyplot as plt
N = 100
theta = np.linspace(np.pi/180, np.pi/30, N)
Dw = np.linspace(10, 200, N*2)
theta, Dw = np.meshgrid(theta, Dw)
def relax(theta, Dw, gyroI, gyroS, dist, decI):
c = np.cos(theta)
X0 = (1/20)*(c*(1+c)*(9*(c**2)-1)+4)-((1/4)*(c**2)*((1+c)**2))
X1 = (1/10)*(1-c)*((2+c)*(1+(3*c**2))+(3*c))
X2 = (1/40)*((1-c)**2)*((3*c**2)+(9*c)+8)
t0 = (1/(Dw*X0))*((((c**2)*((1+c)**2))/(2*(c-1)))*(np.log(((1+c)/2)-((1-c)/2)))+(((1-c)*(2-c-(9*c**2)-(7*c**3)))/60))
t1 = (((1-c)**2)*(9+(32*c)+(44*c**2)+(20*c**3)))/(120*Dw*X1)
t2 = (((1-c)**3)*(8+(12*c)+(5*c**2)))/(240*Dw*X2)
mu = (2*np.pi*122000)
R2 = ((mu)*((gyroS/gyroI)/(dist**3))**2)*(((2*X2*t2)/(5*(1+(decI**2)*(t2**2))))+((2*X1*t1)/(5*(1+(decI**2)*(t1**2))))+((X0*t0)/(5*(1+(decI**2)*(t0**2)))))
return R2
Z = 1/relax(theta, Dw, 599.7690768e6, 60.825978e6, 1.04, 92000.0)/1e3
cmap = plt.get_cmap('jet_r')
CT =plt.contourf(np.degrees(theta), Dw, np.log10(Z), levels= 15 ,cmap=cmap)
plt.colorbar(CT)
plt.xlabel('theta')
plt.ylabel('Dw')
plt.show()
这产生了情节:
我想找到一种方法来获得一个函数,该函数接受单个标量值(在本例中为 的单个值R2
)并返回描述该值的theta
和的所有值。Dw
这样我就能够在我可以定义的范围和分辨率内有效地找到描述第二个图中虚线的所有值。
如何利用 python 将函数中定义的方程用于 R2 的单个值并返回描述它的相应 theta 和 Dw 值?