【AICon】探索RAG 技术在实际应用中遇到的挑战及应对策略!AICon精华内容已上线73%>>> 了解详情
写点什么

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

评论

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

Python列表对象入门

赵开忠

28天写作

一文带你学会AQS和并发工具类的关系

比伯

Java 编程 架构 面试 计算机

坚持写作靠什么?

石君

输入 输出 28天写作

技术创新是PC市场发展基石,英特尔占据明显领先优势

E科讯

CMS系统——登录功能

程序员的时光

程序员 七日更 28天写作

也谈Python编码格式

ITCamel

Python 编码格式

案例研究之聊聊 QLExpress 源码 (七)

小诚信驿站

聊聊架构 规则引擎 28天写作 QLExpress源码 聊聊源码

Spring Boot 集成Thymeleaf模板引擎

武哥聊编程

Java springboot SpringBoot 2 thymeleaf 28天写作

JavaScript02 - js的引入方式

Mr.Cactus

JavaScript

聚焦目标,团队工作不再一盘散沙(下)

一笑

管理 目标管理 复盘 28天写作

我们为什么打比方

石云升

28天写作 确认偏误 打比方

【得物技术】代码覆盖率原理与得物app实践

得物技术

测试 原理 代码 得物技术 覆盖率

IO和NIO的对比篇

Java架构师迁哥

Java并发编程实战(4)- 死锁

技术修行者

Java 并发编程 多线程 死锁

[5/28]产品运维保障体系的质量实践

L3C老司机

JavaScript01 - 基础

Mr.Cactus

JavaScript

保姆级 tomcat 快速入门

田维常

tomcat源码解读

自动驾驶分级,小白能理解的那种(28天写作 Day8/28)

mtfelix

自动驾驶 28天写作

JavaScript04 - JavaScript语法

Mr.Cactus

JavaScript

为什么印度不会成为世界工厂?

JiangX

印度 28天写作 世界工厂

在GitHub中向开源项目提交PR的过程

worry

GitHub pull request

区块链2021狂想曲:迎接以技术为名的春天

脑极体

9. 细节见真章,Formatter注册中心的设计很讨巧

YourBatman

Converter ConversionService Formatter

限时开放!阿里P8大师终于把这份微服务架构与实践第2版PDF分享出来了

Java 编程 程序员 微服务 架构师

JavaScript03 - window对象的方法

Mr.Cactus

JavaScript

JavaScript05 - JavaScript数据类型

Mr.Cactus

JavaScript

APICloud AVM多端开发 |《生鲜电商app开发》项目源码教程

YonBuilder低代码开发平台

大前端 移动开发 APP开发 APICloud

使用nodejs和express搭建http web服务

程序那些事

HTTP nodejs 异步IO 程序那些事 web服务

详解HDFS3.x新特性-纠删码

五分钟学大数据

hadoop hdfs

精选算法面试-数组III

李孟聊AI

面试 算法 数组 28天写作

使用 kubectl-rabbitmq 部署和运维 K8S 上的 RabbitMQ 集群

郭旭东

RabbitMQ kubectl kubectl plugin

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