写点什么

Math.js:多用途的 JavaScript 数学库

  • 2014-01-26
  • 本文字数:1393 字

    阅读完需:约 5 分钟

Math.js 是一款开源的 JavaScript 和 Node.js 数学库,用于处理数字、大数、复数、单位和矩阵。它还有一个灵活的表达式解析器。为了解更多信息,InfoQ 联系了该项目的创始人 Jos De Jong。

Jos 解释了项目背后的动机——

对于 JavaScript,我们有很好的库来处理矩阵、复数和统计等计算。欠缺的是用于高级数学计算的集成解决方案。大多数现有的库支持链式 API,它们使用起来很直观,但只接受库本身已知的数据类型。因此,整合时存在的问题 是:矩阵库不能处理复数,反之亦然,你无法将它们合并起来。math.js 的 API 和 JavaScript 的 Math 对象和内置操作符的 API 是相同的,都是支持各种输入类型的静态函数。 Math.js 对该 API 进行了扩展,为高级数据类型、函数和常数提供了支持。

我希望 math.js 能使应用程序开发中的数学处理变得简单,并且更为有趣,希望还能帮助弥合开发者的世界与学术世界直接的鸿沟。

Math.js 有三种使用方式——

  1. 用静态函数和常数(就像 JavaScript 的 Math 对象) ```

math.add(2, 3)math.add(2, 3); // 5
math.sqrt(-4); // 2i
math.pow([[-1, 2], [3, 1]], 2); // [[7, 0], [0, 7]]

复制代码
2. 对字符串表达式进行求值运算 ```
math.eval('1.2 * (2 + 4.5)'); //7.8
math.eval('5.08 cm to inch'); //2 inch
  1. 使用链式操作 ```

math.select(3)
.add(4)
.multiply(2)
.done(); //14

复制代码
[math.js 网站有几个示例,文档](http://mathjs.org/) 中也有。
Jos 希望在几个月内发布第一个稳定版本 1.0。
> 版本 1.0 还剩下的工作是写一个参考文档,代码的单元测试覆盖率达到 100%,解决 一些不完善的地方。
到版本 1.0 发布时,API 也将稳定下来,之后我们的焦点可能会转移到优化上。Jos 提出了可能会带来潜在性能改进的几个方向,如使用类型化数组、并行化和 <a>asm.js</a>
<a>Jos</a> 为什么选择了 JavaScript,而没有选择像已有诸如 NumPi/SCIPI 等库的 Python 这样的语言,原因是——
> 最近几年,我们已看到了云计算和 Web 应用程序的发展浪潮,而且我自己也完全融入其中了。浏览器和 JavaScript 引擎也正在变得越来越快。几年前,我们就可以使用 [node.js](http://nodejs.org/) 运行 JavaScript 服务器端。这开拓了许多新的可能性,并导致了 JavaScript 的生态系统及其受欢迎程度的 [爆炸性增长](http://resin.io/happy-18th-birthday-javascript/)。看起来 JavaScript 正在成为应用最普遍的语言。尽管 JavaScript 远不完美,但我非常喜欢 JavaScript 及其社区。
目前已经有几个使用 math.js 的最终用户应用。Jos 自己的项目 [mathnotepad](http://mathnotepad.com/) 也是基于 math.js 的,目前还处于早期开发阶段。[numerics](http://numerics.info/) 这款流行的计算器项目也用到了 Math.js。
如果想使用 Math.js,可以查看 [文档](https://github.com/josdejong/mathjs/blob/master/docs/getting_started.md)。
** 查看英文原文:**[Math.js: Versatile Math Library For JavaScript](http://www.infoq.com/news/2014/01/mathjs)
- - - - - -
感谢 [臧秀涛](http://www.infoq.com/cn/author/%E8%87%A7%E7%A7%80%E6%B6%9B) 对本文的审校。
给 InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 [editors@cn.infoq.com](mailto:editors@cn.infoq.com)。也欢迎大家通过新浪微博([@InfoQ](http://www.weibo.com/infoqchina))或者腾讯微博([@InfoQ](http://t.qq.com/infoqchina))关注我们,并与我们的编辑和其他读者朋友交流。
2014-01-26 08:2611575

评论

发布
暂无评论
发现更多内容

NFT 技术的应用及开发

北京木奇移动技术有限公司

NFT 数字藏品 软件外包公司

AI 英语作文 App 的开发技术与功能

北京木奇移动技术有限公司

AI教育 软件外包公司 AI英语

时序数据库 Apache IoTDB 在北京等你!锁定 COSCon 第十届中国开源年会

Apache IoTDB

android 使用 java 编写网络连通性检查

lichong951

android Android TV

C#/.NET/.NET Core优秀项目和框架2025年11月简报

追逐时光者

.net 微软

平凡的我们,摘下鸿蒙世界的星辰

脑极体

AI

别让AI智能体瞎干活!多Agent分工+协作3步法,新手也会用!

王中阳Go

AI 智能体

项目性能优化实践:深入FMP算法原理探索|得物技术

得物技术

前端技术 前端算法 算法、

超越情感正负:优秀的海外舆情分析工具必备的5个深度洞察维度

沃观Wovision

舆情监测 海外舆情监测 出海舆情 舆情监测平台 舆情监测服务

YashanDB数据库性能瓶颈诊断与精准优化方法

数据库砖家

GitHub Actions 供应链攻击:Reviewdog 多个动作在特定时间段遭入侵

qife122

供应链攻击 CVE-2025-30154

安全审查支撑在黑龙江省等保测评整改中的独特设计

等保测评

网络安全 信息安全 数据安全 黑龙江等保测评 哈尔滨等保测评

牡丹江市企业等保整改后:巧用产品功能应对定期复查

等保测评

网络安全 信息安全 黑龙江等保测评 哈尔滨等保测评

AI 英语教育 App 的主要功能

北京木奇移动技术有限公司

AI教育 软件外包公司 AI英语

YashanDB数据库性能瓶颈及优化对策全面解析

数据库砖家

元图CAD场景化插件:以智能引擎重塑设计边界,让效率与创新齐飞

元图CAD

人工智能 AI翻译 场景化插件

报名 | 美团技术沙龙第87期:鸿蒙原生适配与跨端架构演进实践

最新动态

YashanDB数据库性能调优中的核心指标解析

数据库砖家

Step-Audio-R1:音频深度推理模型;Soul 冲刺港交所,「AI+沉浸式社交平台」,累计注册用户达 3.9 亿丨日报

RTE开发者社区

数字孪生项目开发核心技术栈

北京木奇移动技术有限公司

数字孪生 软件外包公司 webgl开发

能看清,更要看懂:MME-VideoOCR全面评估MLLM视频OCR能力

快手技术

NeurIPS 顶会论文 快手技术

YashanDB数据库性能监控与瓶颈识别方法

数据库砖家

风险评估:黑龙江省企业等保测评整改后运维阶段的持续合规保障

等保测评

网络安全 信息安全 黑龙江等保测评 哈尔滨等保测评

大数据-171 Elasticsearch-Head 与 Kibana 7.3.0 实战:安装要点、连通性与常见坑

武子康

Java 大数据 elasticsearch 分布式 Kibana

JSAPIThree 数据源系统学习笔记:让数据在地图上可视化

map_3d_vis

csv 数据源 初学者 GeoJSON mapvthree

2025年开发者必看:用PandaWiki零代码搭建智能产品文档系统

百川云开发者

鸿蒙系统 4.1.0 兼容 Android apk 如何检测兼容的 Android 系统版本是多少

lichong951

HarmonyOS HarmonyOS NEXT

YashanDB数据库性能监控实用指南

数据库砖家

数据分级分类解读及方案

金陵老街

数据 分级分类

成为一个进阶语音智能体开发者,你必须了解这些丨 RTE101 技术专场@RTE2025 回顾

RTE开发者社区

我用AI写了一本AI编程的书,销量还不错,这个经验可复制

陆通

Math.js:多用途的JavaScript数学库_JavaScript_Roopesh Shenoy_InfoQ精选文章