通过温度和湿度计算露点函数

float calc_dewpoint(float t,float h){
	double logex;
	double dew;
	logex=0.66077+7.5*t/(237.3+t)+ (log10(h)-2);
	dew=(logex-0.66077)*237.3/(0.66077+7.5-logex);
	return (float)dew;
}

计算出来的值:

温度:5°,湿度:10%RH, 露点:-24.2,

与专业软件VAISALA Humidity Calculator的结果:-21.7有一定的差距,原因是没有进行分段修正。

解决办法:在网上找了个连接,计算出来结果和VAISALA一致,JS脚本如下方代码所示。(我已参照JS转换成C代码,用于ARM的设备里,经测试,0度以上与VAISALA软件完全一致,0度以下有一些偏差,可自行通过修订解决。C代码下载地址:https://download.csdn.net/download/shjhuang/13664809 )

 


var minT = 173; // -100 Deg. C.
var maxT = 678;

/*
 * Saturation Vapor Pressure formula for range -100..0 Deg. C.
 * This is taken from
 *   ITS-90 Formulations for Vapor Pressure, Frostpoint Temperature,
 *   Dewpoint Temperature, and Enhancement Factors in the Range 100 to +100 C
 * by Bob Hardy
 * as published in "The Proceedings of the Third International Symposium on Humidity & Moisture",
 * Teddington, London, England, April 1998
*/
var k0 = -5.8666426e3;
var k1 = 2.232870244e1;
var k2 = 1.39387003e-2;
var k3 = -3.4262402e-5;
var k4 = 2.7040955e-8;
var k5 = 6.7063522e-1;

function pvsIce(T) {
  lnP = k0/T + k1 + (k2 + (k3 + (k4*T))*T)*T + k5*Math.log(T);
  return Math.exp(lnP);
}

/**
 * Saturation Vapor Pressure formula for range 273..678 Deg. K.
 * This is taken from the
 *   Release on the IAPWS Industrial Formulation 1997
 *   for the Thermodynamic Properties of Water and Steam
 * by IAPWS (International Association for the Properties of Water and Steam),
 * Erlangen, Germany, September 1997.
 *
 * This is Equation (30) in Section 8.1 "The Saturation-Pressure Equation (Basic Equation)"
*/

var n1 = 0.11670521452767e4;
var n6 = 0.14915108613530e2;
var n2 = -0.72421316703206e6;
var n7 = -0.48232657361591e4;
var n3 = -0.17073846940092e2;
var n8 = 0.40511340542057e6;
var n4 = 0.12020824702470e5;
var n9 = -0.23855557567849;
var n5 = -0.32325550322333e7;
var n10 = 0.65017534844798e3;

function pvsWater(T) {
  var th = T+n9/(T-n10);
  var A = (th+n1)*th+n2;
  var B = (n3*th+n4)*th+n5;
  var C = (n6*th+n7)*th+n8;

  var p = 2*C/(-B+Math.sqrt(B*B-4*A*C));
  p *= p;
  p *= p;
  return p*1e6;
}

/**
 * Compute Saturation Vapor Pressure for minT<T[Deg.K]<maxT.
 */
function PVS(T) {
  if (T<minT || T>maxT) return NaN;
  else if (T<C_OFFSET)
    return pvsIce(T);
  else
    return pvsWater(T);
}

/**
 * Compute dewPoint for given relative humidity RH[%] and temperature T[Deg.K].
 */
function dewPoint(RH,T) {
  return solve(PVS, RH/100*PVS(T), T);
}

/**
 * Newton's Method to solve f(x)=y for x with an initial guess of x0.
 */
function solve(f,y,x0) {
  var x = x0;
  var maxCount = 10;
  var count = 0;
  do {
    var xNew;
    var dx = x/1000;
    var z=f(x);
    xNew = x + dx*(y-z)/(f(x+dx)-z);
    if (Math.abs((xNew-x)/xNew)<0.0001)
      return xNew;
    else if (count>maxCount) {
      xnew=NaN;
      throw new Error(1, "Solver does not converge.");
      break;
    }
    x = xNew;
    count ++;
  } while (true);
}

 

  • 2
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 12
    评论
### 回答1: Python可以用来进行温度湿度的转换。温度的单位有摄氏度、华氏度和开尔文三种,而湿度的单位一般为相对湿度(以百分比表示)或者绝对湿度(以克每立方米表示)。下面将分别介绍温度湿度的转换方法。 温度转换: 1. 摄氏度与华氏度之间的转换可以使用以下公式: 华氏度 = 摄氏度 * 1.8 + 32 摄氏度 = (华氏度 - 32) / 1.8 2. 摄氏度与开尔文之间的转换可以使用以下公式: 开尔文 = 摄氏度 + 273.15 摄氏度 = 开尔文 - 273.15 湿度转换: 1. 将相对湿度转换为绝对湿度可以使用以下公式: 绝对湿度 = 相对湿度 / 100 * 饱和水蒸气压(在给定温度下的饱和水蒸气压可以从气象学资料中获取) 2. 将绝对湿度转换为相对湿度可以使用以下公式: 相对湿度 = 绝对湿度 / 饱和水蒸气压 * 100 以上是Python中用于温度湿度转换的基本公式,你可以根据具体需求编写对应的代码来实现转换。 ### 回答2: Python中可以使用公式露点温度转换为湿度露点温度(Td)是指空气在一定温度下,由于饱和水汽含量而达到的温度,也就是空气中的相对湿度达到100%的温度。 转换过程可以按照以下步骤进行: 1. 确定空气温度(T)和露点温度(Td)的数值。 2. 使用以下公式计算相对湿度(RH)的数值: RH = 100 * (e^(17.625 * Td / (Td + 243.04)) / e^(17.625 * T / (T + 243.04))) 其中,e代表自然对数的底数。 3. 最后得到的相对湿度RH即为转换后的湿度值。 在Python中,可以使用math库中的exp函数计算自然对数,代码示例如下: ``` import math def dewpoint_to_humidity(T, Td): RH = 100 * (math.exp(17.625 * Td / (Td + 243.04)) / math.exp(17.625 * T / (T + 243.04))) return RH # 示例使用 T = 25 # 空气温度为25摄氏度 Td = 20 # 露点温度为20摄氏度 humidity = dewpoint_to_humidity(T, Td) print(f"相对湿度:{humidity}%") ``` 以上代码中,通过调用dewpoint_to_humidity函数并传入空气温度露点温度的值,即可得到转换后的湿度值。最后,将湿度值打印出来。 请注意,以上公式是一个近似计算,结果可能存在一定的误差。在实际应用中,可能会使用更精确的公式或者数据表格来进行计算

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黄大刀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值