【发布时间】:2016-02-13 05:04:39
【问题描述】:
我目前正在尝试在蒸汽压亏缺 (VPD) 函数中找到 RH 和 TMP 的值,从而得出理想的 VPD。所以我已经为 VPD 定义了我的函数并尝试进行非线性回归,但没有得到我正在寻找的曲线。
import numpy as np
from scipy.optimize import curve_fit
def ES(C):
es = 0.6108*np.exp((17.27*C)/(C+273.3))
return es
def EA(RH,es):
ea = (float(RH)/100)*es
return ea
def VPD(C,RH):
es = ES(C)
ea = EA(RH,es)
vpd = ea
return vpd
C = np.linspace(0,50,100)
vpd = [0.5]*len(C)
popt, pcov = curve_fit(VPD, C, vpd)
这给了我 10.09132776 和 0.51489686 的 popt 和 pcov 值。但是,我在这里真正想做的是确定在 C 中的这些温度值下的 RH 值,这给了我 0.5 的 VPD 值。我可能会以错误的方式处理此问题,但我确实为此苦苦挣扎了很长时间,并且确实可以使用一些外部视角来了解如何执行此任务。
【问题讨论】:
-
我认为你不需要把它弄得这么复杂,我认为你实际上并没有做你想做的事。我认为你应该结合方程式。由于您已经知道 VPD 和 C 的某些值,因此您只有 1 个未知数,然后可以使用求解器。 Python 确实没有最好的求解器,我更喜欢 Wolfram 但你可以使用 SymPy
标签: python scipy regression curve-fitting