You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于恒星大小与温度计算宜居带:方程反转出错求助

宜居带计算方程反转错误修正

原行星温度计算函数

原JS函数用于基于恒星温度、半径和行星半长轴估算行星温度:

function calcBodyTempSolar(starTemp, starRadius, bodySemiMajorAxis) {
  // 基于行星与恒星的距离估算行星温度
  return starTemp * Math.sqrt(starRadius/(2 * bodySemiMajorAxis)) * Math.pow(.7, 1/4)
}

问题描述

尝试反转上述方程计算宜居带(即给定目标行星温度时,求解对应的行星半长轴),但得到错误结果。自行推导的反转公式为:

(Math.pow(starTemp/(254.58 * Math.pow(0.7, 1/4)), 2) * (starRadius/2))/AU

代入无大气层地球参数(目标温度254.58K、太阳温度5778K、太阳半径1太阳半径)时,预期结果为1AU,但实际得到约1.428AU,推导过程存在错误。

错误根源与正确推导

原方程的数学表达式为:

Tₚ = Tₛ × √(Rₛ/(2a)) × F
其中:

  • Tₚ:行星温度
  • Tₛ:恒星温度
  • Rₛ:恒星半径
  • a:行星半长轴
  • F = 0.7^(1/4)(反照率相关系数)

我们需要解出a(半长轴):

  1. 将F移到等式左侧:Tₚ/F = Tₛ × √(Rₛ/(2a))
  2. 两边除以Tₛ:(Tₚ/(Tₛ×F)) = √(Rₛ/(2a))
  3. 两边平方:(Tₚ/(Tₛ×F))² = Rₛ/(2a)
  4. 整理求解a:a = Rₛ × (Tₛ×F/Tₚ)² / 2

对比你的推导,错误在于将F的位置放反了——你使用了(Tₛ/(Tₚ×F))²,而正确的应该是(Tₛ×F/Tₚ)²。

修正后的反转公式

(Math.pow(starTemp * Math.pow(0.7, 1/4) / 254.58, 2) * (starRadius/2))/AU

验证结果

代入无大气层地球参数:

  • starTemp=5778K,Math.pow(0.7,1/4)≈0.9146
  • 计算得:(5778×0.9146 /254.58)² × (1/2) /1 ≈ (5285/254.58)² ×0.5 ≈20.76²×0.5≈430.9×0.5≈215.45(太阳半径单位),转换为AU后约1AU,符合预期。

内容的提问来源于stack exchange,提问作者William A. Bohn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 23:45:42