生成式AI领域的最新成果都在这里!抢 QCon 展区门票 了解详情
写点什么

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

评论

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

java中的NIO和IO到底是什么区别?20个问题告诉你答案

华为云开发者联盟

Java io nio buffer channel

干货:ANR日志分析全面解析

vivo互联网技术

android 堆栈 日志分析 anr

看Kunpeng BoostKit 使能套件如何实现大数据场景倍级性能提升

华为云开发者联盟

大数据 开源 鲲鹏 鲲鹏计算 Kunpeng BoostKit

学历不够,技术来凑,8年开发经验,逆袭拿到阿里P7岗

Java架构师迁哥

代码写的烂才是原罪?字节三面+微信四面+PayPal四面,大厂面经分享

Java 程序员 架构 面试

老同学突然升到了阿里P7,只因偷偷掌握了JVM的奥秘?

Java架构师迁哥

双非本科逆袭记,阿里技术四面+交叉面+HR面,成功拿到offer

Java架构师迁哥

@成都的Coder

蚂蚁集团移动开发平台 mPaaS

flutter 移动开发 mPaaS

每日优鲜:AI 技术驱动下的社区新零售

蚂蚁集团移动开发平台 mPaaS

人工智能 算法 图像识别 codehub

5.7w字?GitHub标星120K的Java面试知识点总结,真就物超所值了

Java 编程 程序员 面试 计算机

Linux Shell 自动交互人机交互的 3 种方法

学神来啦

Linux 运维 Shell 虚拟机 linux运维

带你遨游银河系的十种分布式数据库

悟空聊架构

数据库 分布式 分布式数据库 6月日更

2021版最新!字节跳动3面+腾讯6面一次过,谈谈我的大厂面经

Java架构之路

Java 程序员 架构 面试 编程语言

从零开始学习3D可视化之坐标系

ThingJS数字孪生引擎

物联网 可视化 数字时代 3D模型 3D可视化

阿里都会问些什么?4面阿里余额宝Java高级技术岗

Java架构师迁哥

Mybatis缓存机制详解

北游学Java

Java mybatis

花了三个小时把一份GitHub上标星115k的《Java超全进阶教程》整理成了PDF文档。

Java架构之路

Java 程序员 架构 面试 编程语言

如何在 Electron 上实现 IM SDK 聊天消息全文检索

网易云信

全文检索 Electron IM

本科毕业六年,备战一个月,四面阿里巴巴定级P7

Java架构师迁哥

Hanoi 塔问题(Java实现)

若尘

数据结构 java编程 6月日更

解读革命性容器集群CCE Turbo:计算、网络、调度全方位加速

华为云开发者联盟

容器 华为云 CCE Turbo 集群服务器

入职美团定级P7,总结2021年最新180道高级岗面试题及答案

Java架构师迁哥

即时通讯系列-WorkPlus简介

WorkPlus

开源 即时通讯 IM 办公自动化

揭秘Spring家族之——AOP和IOC

Java架构师迁哥

【译】JavaScript 代码整洁之道-重构篇

KooFE

JavaScript 大前端 代码重构 6月日更 整洁代码

网络攻防学习笔记 Day39

穿过生命散发芬芳

网络攻防 6月日更

京东T8Java架构师呕心沥血总结整理的《15w字的Java面试手册》免费开放分享给大家复习。

Java架构之路

Java 程序员 架构 面试 编程语言

普通二本,吃透这份阿里高级专家的《Java面试手册21版》成功拿下腾讯offer

Java架构师迁哥

博客

vincentjia

一文读懂开源项目 OpenHarmony2.0

科技热闻

iOS开发-Objective-C 中的 MVVM 模式介绍

iOSer

ios objective-c MVVM ios开发

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