写点什么

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:2611369

评论

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

英特尔推出oneAPI 2023工具包,显著提升跨平台生产力

科技热闻

gitlab ldap配置

阿呆

gitlab ldap

存量时代下 用低代码开发平台提升你的CEM

力软低代码开发平台

Go Gorm Sqlite3 CreateInBatches 报错:too many SQL variable 排查与解决

非晓为骁

Go gorm sqlite3 CreateInBatches

2022年最有价值书单

月亮上的六便士

好书推荐

简单易用的监控告警系统 | HertzBeat 在 Rainbond 上的使用分享

北京好雨科技有限公司

webAssembly on server side 的应用场景

磊吐槽

云原生 webassembly

华为云桌面,为企业数字化办公添砖加瓦!

科技怪授

致力程序员成长,阿里大佬“亲码”Java全栈架构笔记,差距不止一点点

程序员小毕

程序员 程序人生 后端 架构师 java面试

居家办公正确的打开方式——华为云桌面

与时俱进的时代

上云合作伙伴,华为云桌面致力打造优质云上办公生态

与时俱进的时代

华为云Workspace树立云服务模式新标杆

科技怪授

华为云桌面——云上办公安全高效,高清流畅

与时俱进的时代

华为云会议,总有一种场景满足你的需求

科技说

华为云桌面,助您解锁轻松高效办公模式

科技怪授

流畅高清,华为云桌面助力设计师高效办公!

与时俱进的时代

重磅 | 九科信息入选“第一新声”2022年中国RPA行业优秀厂商图谱

九科Ninetech

开源创新 源起潮“蜥”——龙蜥社区走进浪潮信息 MeetUp 即将开幕

OpenAnolis小助手

云原生 Meetup 龙蜥社区 浪潮信息 开源活动

华为云会议好评如潮的背后,竟然暗藏这么多黑科技!

科技说

英特尔推动办公场景智能升级,助力企业数字化转型

科技热闻

2022 卡塔尔世界杯收官,中国 App 继续中东「征战」

融云 RongCloud

App

有奖征文活动:从 RTC 到 RTE,从音视频到「实时万象」!

声网

人工智能 音视频

集团型企业主数据管理框架、方法

用友BIP

华为云桌面Workspace,如何让用户安全高效云上办公?

科技怪授

云服务器评测:这个双十二,哪个云服务器值得买?

科技热闻

灵活、高效、可靠,华为云桌面想用户所想!

与时俱进的时代

超高清设计师云工作站,设计可以更高效

清欢科技

What's new in dubbo-go v3.0.4

apache/dubbo-go

dubbo Dubbo服务 Dubbo网关

「实操」适配 NebulaGraph 新版本与压测实践

NebulaGraph

图数据库

华为云会议助力政企用户提升沟通效率

科技说

安全灵活,华为云桌面成为数字化办公最佳搭档

清欢科技

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