zoukankan      html  css  js  c++  java
  • math.js:灵活强大的JavaScript数学库

    最近为期权开发一些基本技术指标,用到一些C++的数学库,刚好看到JavaScript的math.js库,这里对math.js做一下简单介绍。

    一、什么是math.js

    math.js是一个广泛应用于JavaScript 和 Node.js的数学库,它的特点是灵活表达式解析器,支持符号计算,内置大量函数与常量,并提供集成解决方案来处理不同的数据类型,如数字,大数字,复数,分数,单位和矩阵。
    math.js可以在浏览器、node.js 和任何JavaScript引擎中使用。[下载地址:http://mathjs.org/download.html]

    二、Features

          1、支持数字,大数,复数,分数,单位,字符串,数组和矩阵。

          2、与JavaScript的内置数学库兼容。

          3、包含一个灵活的表达式解析器

          4、符号计算。

          5、内置大量的函数和常量。

          6、没有依赖,运行在任何JavaScript引擎。

          7、可以用作命令行应用程序。

          8、容易扩展

          9、开源


    三、用法

    math.js支持各种软件包管理器(ex:npm & bower)安装,也可以从网站http://mathjs.org/download.html下载库。
    通过npm安装:

    pm install mathjs

    通过bower安装:

    bower install mathjs

    math.js 可以从cdnjs 下载或者链接:

    https://cdnjs.cloudflare.com/ajax/libs/mathjs/3.16.0/math.min.js

    math.js可以类似于JavaScript的内置Math库。 此外,math.js可以使用eval表达式并支持链接操作。一下是math.js三种使用方式:

    1、用静态函数和常数(就像JavaScript的Math对象)

    math.round(math.e, 3);            // 2.718math.add(2, 3);  // 5 math.sqrt(-4);  // 2i math.pow([[-1, 2], [3, 1]],2);     // [[7, 0], [0, 7]]math.derivative('x^2 + x', 'x');  // 2 * x + 1math.atan2(3, -3) / math.pi;      // 0.75

    2、对字符串表达式进行求值运算

    math.eval('12 / (2.3 + 0.7)');    // 4math.eval('12.7 cm to inch');     // 5 inchmath.eval('sin(45 deg) ^ 2');     // 0.5math.eval('9 / 3 + 2i');          // 3 + 2imath.eval('det([-1, 2; 3, 1])');  // -7

    3、链式操作

    math.chain(3)    .add(4)    .multiply(2)    .done(); // 14

    4、矩阵操作

    var n = math.matrix([[4,3,2], [6,6,8], [7,4,5]]);   console.log(n.valueof()); // [[4,3,2],[6,6,8],[7,4,5]]

    可以使用如下代码来创建一个用0填充的矩阵:

    var z = math.zeros(2,2);  console.log(z.valueof());   // [[0, 0], [0, 0]]

    注:大多数math.js函数,都需要valueof()或者done()函数来真正地获取操作的值,如上面代码所示。

    5、BigNumbers

    var b = math.complex('4-2i');b.re = 5;console.log(b.valueof()); // 5-2i

    math.js对BigNumbers的支持,拥有任意精度的数值,并且是具有实部和虚部的复数。

    math.js文档地址:http://mathjs.org/docs/index.html


  • 相关阅读:
    浙大数据结构课后习题 练习二 7-2 Reversing Linked List (25 分)
    浙大数据结构课后习题 练习二 7-2 一元多项式的乘法与加法运算 (20 分)
    浙大数据结构课后习题 练习一 7-1 Maximum Subsequence Sum (25 分)
    浙大数据结构课后习题 练习一 7-1 最大子列和问题 (20 分)
    PAT Basic 1019 数字黑洞 (20 分)
    PAT Basic 1017 A除以B (20 分)
    PAT Basic 1013 数素数 (20 分)
    PAT Basic 1007 素数对猜想 (20 分)
    PAT Basic 1003 我要通过! (20 分)
    自动化运维——HelloWorld(一)
  • 原文地址:https://www.cnblogs.com/hgmyz/p/12352426.html
Copyright © 2011-2022 走看看