指数曲线拟合

2024-04-26 21:09:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正试图在蒸汽压差(VPD)函数中找到理想VPD的RH和TMP值。所以我已经为虚拟专用数据库定义了我的函数,并试图做一个非线性回归,但没有得到我想要的曲线。你知道吗

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)

它给出了popt和pcov的值,分别是10.09132776和0.51489686。然而,我真正想做的是确定这些温度下的相对湿度值,用C表示,VPD值为0.5。我可能是走错了路,但我已经挣扎了很长一段时间,真的可以用一些外部的角度来看待如何去做这个任务。你知道吗


Tags: 函数importreturnesdefnpfitrh
1条回答
网友
1楼 · 发布于 2024-04-26 21:09:07

假设你的方程是正确的,我没有验证,你可以简单地这样做:

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的每个值的相对湿度,假设您的公式是正确的。我只是简单地替换了这些方程,并将得到的方程设为0。只需将-0.5改为-(new VPD)即可获得不同VPD的结果。你知道吗

相关问题 更多 >