← JavaScript Math.cos()方法:计算任意角度的余弦值 JavaScript Math.exp()方法:计算以e为底的指数函数 →

JavaScript Math.cosh()方法:计算双曲余弦值

原创 2026-04-13 JavaScript 已有人查阅

Math.cosh() 是 JavaScript 中 Math 对象提供的一个静态方法,用于计算给定数值的双曲余弦(hyperbolic cosine)。双曲余弦在数学上定义为 cosh(x) = (e^x + e^(-x)) / 2,它的函数图像是一条形状类似悬垂链条的曲线,在物理学和工程学中常用来描述悬链线、电容充放电曲线等自然现象。

相比于普通的三角函数 Math.cos()Math.cosh() 在前端开发中的出场率确实低一些,但如果你接触过数据可视化中的曲线拟合、游戏物理引擎里的阻尼运动模拟,或者某些特殊缓动函数的编写,就会意识到这个方法的存在价值。我个人在做一个音频可视化项目时,曾用双曲余弦函数生成过一条平滑的包络曲线,效果比线性插值自然得多。

Math.cosh() 的一个特点是:它的返回值始终大于或等于 1,而且它是一个偶函数,这意味着 Math.cosh(-x) 和 Math.cosh(x) 的结果相等。

方法语法

Math.cosh(num)

参数说明

num —— 需要计算双曲余弦的数值。可以是正数、负数、零,也可以是能转换为数值的表达式。

返回值

返回参数 num 的双曲余弦值。由于双曲余弦函数的数学性质,返回值大于或等于 1。当 num 为 0 时,返回值为精确的 1。

代码示例与详细解析

示例一:不同数值的双曲余弦计算

下面这段代码展示了几个典型参数对应的双曲余弦结果。注意观察负数参数的处理方式,以及参数绝对值增大时函数值的增长趋势。

// 计算不同数值的双曲余弦
console.log(Math.cosh(-1));      // 输出: 1.5430806348152437
console.log(Math.cosh(0));       // 输出: 1
console.log(Math.cosh(0.5));     // 输出: 1.1276259652063807
console.log(Math.cosh(2));       // 输出: 3.7621956910836314
console.log(Math.cosh(3));       // 输出: 10.067661995777765

Math.cosh(-1) 返回约 1.543,Math.cosh(1) 也是同一个值(虽然示例里没直接展示),这验证了双曲余弦的偶函数特性。Math.cosh(0) 精确返回 1,符合 (e^0 + e^0) / 2 = 1 的数学定义。当参数从 0.5 增加到 2、再到 3 时,返回值从 1.12 迅速增长到 10.06,体现出双曲余弦函数随绝对值增大而指数级上升的性质。

个人经验分享:在处理绝对值较大的参数时,Math.cosh() 的结果可能迅速溢出。例如 Math.cosh(710) 在 JavaScript 中已经会返回 Infinity。如果你的计算场景涉及大数值输入,不妨考虑对输入范围做一个合理的裁剪,或者改用近似的对数形式计算以避免溢出问题。

示例二:与双曲正弦的对比验证

双曲函数之间满足一个重要的恒等式:cosh²(x) - sinh²(x) = 1。利用这个关系,可以在代码中交叉验证计算结果。

// 验证双曲函数恒等式: cosh²(x) - sinh²(x) = 1
const x = 1.5;
const coshValue = Math.cosh(x);
const sinhValue = Math.sinh(x);
const identityCheck = coshValue ** 2 - sinhValue ** 2;

console.log(`cosh(${x}) = ${coshValue}`);      // 输出: cosh(1.5) = 2.352409615243247
console.log(`sinh(${x}) = ${sinhValue}`);      // 输出: sinh(1.5) = 2.1292794550948173
console.log(`cosh² - sinh² = ${identityCheck}`);// 输出: cosh² - sinh² = 1(可能存在微小浮点误差)

这个恒等式在编写涉及双曲函数的物理模拟代码时,可以用来做单元测试或调试时的数据校验。实际输出值在浮点数精度范围内会非常接近 1。

示例三:负数参数与对称性的利用

因为 Math.cosh() 是偶函数,当你不确定输入参数的符号时,可以直接取绝对值后再计算,结果一致。这一特性在接收外部数据时可以减少一层判断逻辑。

// 双曲余弦的对称性验证
const negativeValue = -2.5;
const positiveValue = 2.5;

console.log(Math.cosh(negativeValue));   // 输出: 6.132289479663686
console.log(Math.cosh(positiveValue));   // 输出: 6.132289479663686
console.log(Math.cosh(-2.5) === Math.cosh(2.5)); // 输出: true

两个输出相等,说明符号对双曲余弦的结果没有任何影响。这个特性和普通余弦 Math.cos() 是一致的,但与双曲正弦 Math.sinh() 不同——后者是奇函数,满足 sinh(-x) = -sinh(x)

示例四:构建交互式双曲余弦计算器

下面这段代码提供了一个简单的交互界面,可以输入任意数值并实时查看其双曲余弦值。这对于直观感受双曲余弦函数的增长曲线会很有帮助。

<label for="coshInput">输入一个数值:</label>
<input type="text" id="coshInput" placeholder="例如 -1、0.5 或 2" />
<button onclick="computeHyperbolicCosine()">计算双曲余弦</button>
<p>计算结果:<span id="coshResult"></span></p>

<script>
function computeHyperbolicCosine() {
  const inputField = document.getElementById('coshInput');
  const outputSpan = document.getElementById('coshResult');
  const rawInput = inputField.value;
  
  const numericValue = parseFloat(rawInput);
  
  if (!isNaN(numericValue)) {
    const result = Math.cosh(numericValue);
    // 对极大值做友好提示
    if (result === Infinity) {
      outputSpan.textContent = 'Infinity(输入数值过大导致溢出)';
    } else {
      outputSpan.textContent = result;
    }
  } else {
    outputSpan.textContent = '请输入有效的数值';
  }
}
</script>

这个工具特意加了一个对 Infinity 的判断和提示,因为如前所述,Math.cosh() 在处理较大数值时容易溢出。输入 710 左右的数值试试,你会看到返回 Infinity 的提示。这种边界处理在项目中能避免静默的错误传播。

本节课程知识要点

  • Math.cosh(num) 计算参数 num 的双曲余弦值,数学定义为 (e^x + e^(-x)) / 2

  • 该方法是偶函数,Math.cosh(-x) 与 Math.cosh(x) 结果相同。

  • 返回值大于或等于 1,Math.cosh(0) 精确返回 1。

  • 参数绝对值增大时,返回值呈指数级增长,输入约 710 以上时会溢出并返回 Infinity

  • 双曲余弦与双曲正弦满足恒等式 cosh²(x) - sinh²(x) = 1,可用于结果校验。

  • 在悬链线计算、平滑曲线插值、以及某些物理模拟的衰减模型中,Math.cosh() 有实际应用价值。

双曲函数在常规的前端业务代码中确实不常见,但一旦涉及到需要自然平滑曲线或者指数级增长特性的场景,Math.cosh() 就是一个值得纳入工具箱的方法。理解它的偶函数性质和溢出边界,能让你在用到它的场合写出更稳健的代码。

← JavaScript Math.cos()方法:计算任意角度的余弦值 JavaScript Math.exp()方法:计算以e为底的指数函数 →
分享笔记 (共有 篇笔记)
验证码:
微信公众号