[英]Curve Fitting to Exponential
我目前正在尝试在导致理想 VPD 的蒸汽压不足 (VPD) 函数中找到 RH 和 TMP 的值。 所以我已经为 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 值。 但是,我真正想做的是确定这些温度值下的 RH 值(以 C 为单位),这使我的 VPD 值为 0.5。 我可能会以错误的方式处理这个问题,但我真的已经为此苦苦挣扎了很长时间,并且真的可以使用一些外部观点来了解如何完成这项任务。
假设你的方程是正确的,我没有验证你可以简单地这样做:
from sympy.solvers import solve
from sympy import Symbol
r = Symbol('r')
for C in np.linspace(0,50,100):
result = solve(((r/100)*(0.6108*np.exp((17.27*C)/(C+273.3))))-0.5, r )
print("For C = {} RH = {}".format(C, result[0]))
假设您的方程是正确的,这将打印 C 的每个值的 RH。 我只是简单地替换了方程并将结果方程设置为等于 0。只需将 -0.5 更改为 -(new VPD) 即可获得不同 VPD 的结果。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.