50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

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

评论

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

解密领域驱动设计(DDD):搭建强大、灵活的软件架构神器

xfgg

Java 架构 DDD 领域驱动模型

亚马逊云是哪个国家的?收费标准贵吗?

行云管家

云计算 云服务 云管理 亚马逊云

RocketMQ 5.0 如何配置TLS加密传输?

Apache RocketMQ

消息列队

Pose泰裤辣! 一键提取姿态生成新图像

华为云开发者联盟

人工智能 AI 华为云 华为云开发者联盟 企业号 5 月 PK 榜

ChatGPT与深度学习的完美融合:打造智能化推荐系统新时代

GPU算力

虚拟化技术 - CPU虚拟化

天翼云开发者社区

cpu 虚拟化

天翼云CDN全站加速产品对websocket协议的支持

天翼云开发者社区

云计算 CDN

开源之夏 2023|欢迎报名 Apache RocketMQ 社区项目!

Apache RocketMQ

RocketMQ 开源之夏

大数据如何助力营销(4)策略制定

MobTech袤博科技

使用数据可视化分析还有多少人在玩梦幻西游

搞大屏的小北

数据可视化 用户画像 梦幻西游 游戏分析

使用MFT进行加密文件传输的7个好处

镭速

美团前端vue面试题

bb_xiaxia1998

Vue 前端

靠这份GitHub 标星80K的图解算法,杀进大厂!

程序知音

Java 数据结构 算法 后端技术 算法与数据结构

行云流水| CI 3.0 云原生构建全新上线

CODING DevOps

DevOps 云原生 软件工程 研发效能 持续构建

万物可卷!低代码充满想象,能打敢战

引迈信息

低代码 JNPF

免费堡垒机选择云堡垒机可以吗?哪家好?

行云管家

堡垒机 云堡垒机 免费堡垒机

太爆了!阿里最新出品2023版JDK源码学习指南,Github三天已万赞

程序员小毕

程序员 后端 jdk源码 架构师 java面试

聊聊原生拖拽API

巨梦科技

django Vue

学术加油站|基于LSM-tree存储系统的内存管理,最大限度降低I/O成本

OceanBase 数据库

数据库 oceanbase

使用 NFTScan NFT API 开发一个多链 NFT Marketplace

NFT Research

API NFT\

豆浆、油条、肉夹馍......西安银行的挑战开始了

OceanBase 数据库

数据库 oceanbase

全是技巧!ZBrush雕刻手部教程赶紧收藏!

Finovy Cloud

数据可视化图表之雷达图介绍

2D3D前端可视化开发

数据分析 数据可视化 数据可视化工具 可视化图表 雷达图

阿里大佬耗时半年!肝出了这1015页分布式全栈手册

程序知音

Java 分布式 java架构 Java进阶 后端技术

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