AI实践哪家强?来 AICon, 解锁技术前沿,探寻产业新机! 了解详情
写点什么

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

评论

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

Python 函数为什么会默认返回 None?

Python猫

Python 编程

区块链+公共安全 大有可为

CECBC

区块链 安全

从每秒6000写请求谈起

架构师修行之路

程序员 架构师 高并发系统设计

全场景智慧:新工业革命必须拥抱的晨曦

脑极体

Docker 搭建 Redis Cluster 集群环境

哈喽沃德先生

redis Docker 容器 集群 redis cluster

深度解读:Apache DolphinScheduler 新架构与特性,性能提升2~3倍

代立冬

大数据 开源 工作流调度 开源社区

Python 中的数字到底是什么?

Python猫

Python 翻译 PEP

LeetCode题解:239. 滑动窗口最大值,双循环暴力,JavaScript,详细注释

Lee Chen

大前端 LeetCode

dubbo应用级服务发现初体验

捉虫大师

dubbo 注册中心

凤凰交易所 全球首个多元化生态交易平台震撼来袭

InfoQ_967a83c6d0d7

经济适用的企业内外网互动直播方案

fumingwang

音视频 直播 视频会议 企业应用

芯片破壁者(十五):仙童半导体和“八叛逆”所缔造的“硅谷模式”

脑极体

Flink保存点-17

小知识点

scala 大数据 flink

学习笔记丨结构体中的内存管理

Liuchengz.

c Linux 学习

数字货币钱包软件开发方案,区块链数字货币钱包源码

13530558032

在5G智慧园区的“保龄球道”上,目标全垒打的征途

脑极体

LeetCode题解:84. 柱状图中最大的矩形,循环+双指针暴力,JavaScript,详细注释

Lee Chen

大前端 LeetCode

缓存与数据库一致性问题深度剖析

Zhendong

数据库 缓存 秒杀系统

Apache Pulsar 8 月月报:里程碑一个接一个

Apache Pulsar

大数据 云原生 Apache Pulsar 消息系统 消息中间件

oeasy教您玩转linux010204-figlet

o

Centos7 mongodb安装全攻略

红泥

mongodb

有奖征文火热开赛,万元大奖等你来拿,准备好了吗?

InfoQ写作社区官方

程序员 开发者 音视频 随笔杂谈 RTC征文大赛

北京首台区块链政务终端亮相 一键“拉取”链上数据

CECBC

区块链技术

Python 为什么没有 void 关键字?

Python猫

Python 编程

合约跟单系统开发,合约跟单软件定制开发

13530558032

iWebExcel 协同数据填报和在线分析平台

葡萄城技术团队

SpreadJS

macos主流工作开发套件指南

久违

macos Docker 大前端 自动化部署

ARTS Week10

丽子

实战中学习浏览器工作原理 — 之 HTTP 请求与解析

三钻

CSS Java 大前端 浏览器

区块链支付系统开发,数字货币支付承兑商APP模式搭建

13530558032

区块链usdt承兑商支付系统开发 区块链应用开发

电微13828808271

USDT承兑支付系统开发

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