math.js

an extensive math library for JavaScript and Node.js


Table of Contents

概要

Math.jsはJavaScriptとNode.jsの広範な数学ライブラリです。 柔軟な表現パーサを備えており、数値、大きな数値、複素数、単位、行列を扱う、強力で使いやすい統合ソリューションを提供します。

math.js は、javascript のグローバルオブジェクト Math の不満を解消してくれる数値計算ライブラリ。様々な数学の関数に対応している上に、直交性を重視して、多倍長演算(BigNumber) や 複素数(Complex) の属性を指定すれば、全ての関数がその演算をしてくれる。

特徴

  • 数値、大きな数値、分数、複素数、単位、文字列、配列、行列をサポートします。
  • JavaScriptの組み込み数学ライブラリと互換性があります。
  • 柔軟な式パーサーが含まれています。
  • 連鎖操作をサポートします。
  • 組み込み関数と定数の大きなセットが付属しています。
  • 依存関係はありません。 任意のJavaScriptエンジンで実行されます。
  • 簡単に拡張可能です。
  • オープンソース。

追記

  • 2018/6/17: 2018-02-25 の version 4.0.0 以降、後方互換性のない変更が加えられたそうです。まだ、精査してないですが要注意! History

基本動作

  • 関数
    • math.cos(math.pi)
    • math.exp(20)
    • math.lcm(34, 28)
    • math.sqrt(2)
    • math.sin(3*math.i)
  • チェーン
    • math.chain(4).sqrt().add(2)
    • math.chain(5).square()
    • math.chain(3).add(4).subtract(2).done()
    • math.chain([[1,2],[3,4]]).subset(math.index(0,0),8).multiply(3).done()
  • eval
    • math.eval('sqrt(4) + 2')
    • math.eval('5.08 cm + 2 inch')
    • math.eval('10.16 cm to inch')
    • math.eval('f(x,y)=x^y; f(3,3)')

DEMO

以下の構文解釈を試してください。
フルアプリケーションはこちら → Math Notepad

loading...
ショートカットキー:
  • 入力フィールドにフォーカスを設定するために S キーを押す。
  • フルスクリーンを切り替える Ctrl+F11
  • 履歴を消去するには "clear" を入力。

BigNumbers

  • BigNumbers を指定すると任意の桁数、任意指数で計算可能。
  • 以下の指定で、math.eval での計算が BigNumbers 指定で行われる。
    math.config({
      number: 'BigNumber', // Default type of number:
                           // 'number' (default), 'BigNumber', or 'Fraction'
      precision: 64        // Number of significant digits for BigNumbers
    });

本家サイト


添付物

Examples

    Browser examples

      Advanced examples

        参考サイト


        リファレンス

        定数 (constant)

        Constant Description Value
        e, E オイラーの数、自然対数の底。 e
        i i * i = -1 と定義される虚数単位。複素数は a + b*i と表記され、a が実部、b が虚数部です。 sqrt(-1)
        Infinity 無限大、浮動小数点数で処理できる最大数よりも大きい数。 Infinity
        LN2 2の自然対数を返します。 LN2
        LN10 自然対数10を返します。 LN10
        LOG2E Eの底2の対数を返します。 LOG2E
        LOG10E Eの底10の対数を返します。 LOG10E
        NaN Not a number. NaN
        null Value null. null
        phi Phi は黄金比です。 比率が2つの数量のうちの大きい方と合計の比率と同じであれば、2つの数量は金の比率になります。 (1 + sqrt(5)) / 2 として定義されます。 phi
        pi, PI 数 pi は、円の円周とその直径の比である数学定数です。 pi
        SQRT1_2 1/2の平方根を返します。 SQRT1_2
        SQRT2 2の平方根を返します。 SQRT2
        tau Tau は円の円周に対する半径の比定数で、2*pi に等しい。 tau
        uninitialized 新しいエントリを初期化しないように行列のサイズを変更するときのデフォルト値として使用される定数です。
        version math.jsのバージョン番号を返します。 version

        関数 (function)



        Construction(組み立て) functions

        Function Description
        bignumber(x) 任意の精度で数値を格納できるBigNumberを作成します。
        boolean(x) ブール値を作成するか、文字列または数値をブール値に変換します。
        chain(value) 値に連鎖操作を実行できるように、チェーン内の値をラップします。
        complex(re, im) 複素数を作成するか、値を複素数に変換します。
        createUnit(units) ユーザー定義の単位を作成し、単位を登録します。
        fraction(numerator, denominator) 分数を作成する。値を分数に変換する。
        index(range1, range2, ...) インデックスを作成します。
        matrix(x) 行列を作成します。
        number(value) 数値を作成するか、文字列、ブール値、または単位を数値に変換します。
        sparse(x) 疎行列を作成します。
        splitUnit(unit, parts) 単位が元の単位に等しい単位の配列で単位を分割します。
        string(value) 文字列を作成するか、任意のオブジェクトを文字列に変換します。
        unit(x) ユニットを作成します。


        Expression(式) functions

        Function Description
        compile(expr) 式を解析してコンパイルします。
        eval(expr [, scope]) 式を評価する。 scope は変数を式に持ち込むときに {k: k, sum: sum} のようにオブジェクトで渡す。
        help(search) 関数またはデータ型のヘルプを取得します。
        parse(expr [, scope]) 式を解析する。
        parser() パーサーを作成します。


        Algebra(代数) functions

        Function Description
        lsolve(L, b) 前方代入によって線形方程式系を解く。
        lup(A) 部分ピボットを使用して行列LU分解を計算します。
        lusolve(A, b) 線形連立方程式を解きます。A * x = bAは [n × n] の行列で、 b は [n] の列ベクトルです。
        slu(A, order, threshold) フルピボットで疎行列 LU分解を計算します。
        usolve(U, b) 後退代入によって線形方程式系を解く。


        Arithmetic(算術) functions

        Function Description
        abs(x) 数値の絶対値を計算します。
        add(x, y) 2つの数を加算します。 x + y
        cbrt(x [, allRoots]) 値の3乗根を計算します。
        ceil(x) プラスの無限大に向かって値を丸める。x が複素数なら、実部と虚部ともにプラスの無限大に向かって値を丸める。
        cube(x) 値の三乗を計算。x * x * x
        divide(x, y) 2数の割り算。 x / y
        dotDivide(x, y) 2つの行列を要素ごとに分割します。
        dotMultiply(x, y) 2つの行列を要素ごとに掛け合わせます。
        dotPow(x, y) 行列 x の各要素を y 乗します。(pow は、行列自体の掛け算を行います)
        exp(x) 値の指数を計算します。
        fix(x) ゼロに向かって値を丸めます。
        floor(x) 値を負の無限大の方に丸めます。
        gcd(a, b) つ以上の値または配列の最大公約数を計算します。
        hypot(a, b, ...) リストの値の hypotenusa(斜辺) を計算します。
        lcm(a, b) 2つ以上の値または配列の最小公倍数を計算します。
        log(x [, base]) 値の対数を計算します。
        log10(x) 値の10を底とした対数を計算します。
        mod(x, y) modulus(剰余)を計算します。
        multiply(x, y) 2つ以上の値の乗算。 x * y
        norm(x [, p]) 数値、ベクトルまたは行列のノルムを計算します。
        nthRoot(a) 値のn乗根を計算します。
        pow(x, y) x の y乗を計算します。 x ^ y
        round(x [, n]) 最も近い整数に値を丸めます。
        sign(x) 値の符号を計算します。
        sqrt(x) 値の平方根を計算します。
        square(x) 値の平方を計算します。 x * x
        subtract(x, y) 2つの値を減算します。 x - y
        unaryMinus(x) 値の符号を反転し、単項マイナス演算を適用します。
        unaryPlus(x) 単項プラス演算。
        xgcd(a, b) 2つの値の拡張最大公約数を計算します。


        Bitwise functions

        Function Description
        bitAnd(x, y) 2つの値のビット単位の AND。 x & y
        bitNot(x) 値のビット単位の NOT。 ~x
        bitOr(x, y) 2つの値のビット単位の OR。 x | y
        bitXor(x, y) 2つの値のビット単位の XOR。 x ^ y
        leftShift(x, y) x の値を y ビットだけ、論理左シフト。 x << y
        rightArithShift(x, y) x の値を y ビットだけ、算術右シフト。 x >> y
        rightLogShift(x, y) x の値を y ビットだけ、論理右シフト。 x >>> y


        Combinatorics(組合せ論) functions

        Function Description
        bellNumbers(n) ベル数(Bell number)は、n個のものを分割する方法の総数。 bellNumbers(6) bellNumbers(12)
        catalan(n) カタラン数(Catalan number)は、さまざまなタイプの組み合わせ構造を列挙します。 catalan(6), catalan(20)
        composition(n, k) n 個の集まりを、k 個の部分に分けるやり方の総数。 composition(3, 2) composition(6, 2), composition(8, 3)
        stirlingS2(n, k) 第2の種類のスターリング数は、n個のラベル付きオブジェクトのセットをk個の空でないラベルなしサブセットに分割する方法の数を数えます。    stirlingS2(10,3)


        Complex(複素数) functions

        Function Description
        arg(x) 複素数の偏角を計算します。 c=5+3i; arg(c)
        conj(x) 複素値の複素共役(Complex conjugate)を計算します。 c=5+3i; conj(c)
        im(x) 複素数の虚部を取得します。 c=5+3i; im(c)
        re(x) 複素数の実部を取得します。 c=5+3i; re(c)






        Matrix(行列) functions

        Function Description
        concat(a, b, c, ... [, dim]) 2つ以上の行列を連結する。
        cross(x, y) 3次元空間内の2つのベクトルの外積を計算します。
        det(x) 行列の行列式を計算します。
        diag(X) 対角行列を作成するか、行列の対角を取り出す \(x\) がベクトルの場合、対角にベクトル \(x\) を持つ行列が返されます。
        dot(x, y) 2つのベクトルの内積を計算します。
        eye(n) サイズ \(m \times n\) または \(n \times n \) の2次元単位行列を作成します。
        filter(x, test) 配列または1次元の行列の項目をフィルタリングします。
        flatten(x) 多次元行列を一次元の行列にまとめる。
        forEach(x, callback) 行列/配列のすべての要素を繰り返し処理し、与えられたコールバック関数を実行します。
        inv(x) 正方行列の逆行列を計算します。
        map(x, callback) 行列/配列の各エントリで実行されるコールバック関数の結果を使用して、新しい行列または配列を作成します。
        ones(m, n, p, ...) 1で満たされた行列を作成します。
        partitionSelect(x, k) アレイまたは1Dマトリックスのパーティションベースの選択。
        range(start, end [, step]) 範囲から配列を作成します。
        resize(x, size [, defaultValue]) 行列のサイズを変更します。
        size(x) 行列またはスカラーのサイズを計算します。
        sort(x) 行列内のアイテムをソートします。
        squeeze(x) 行列を絞って、行列から内側と外側の単一次元を削除します。
        subset(x, index [, replacement]) 行列または文字列のサブセットを取得または設定します。
        trace(x) 行列のトレースを計算する:正方行列の主対角線上の要素の合計。
        transpose(x) 行列を転置する。
        zeros(m, n, p, ...) ゼロで埋められた行列を作成します。


        Probability(確率) functions

        Function Description
        combinations(n, k) \(n\) から \(k\) を選ぶ組み合わせの数。 \(_n C _k\)
        factorial(n) 値の階乗を計算する階乗は整数値のみを引数としてサポートします。
        gamma(n) 小さな値に対してはLanczos近似を使用し、大きい値に対しては拡張スターリング近似を使用して、値のガンマ関数を計算します。
        kldivergence(x, y) 2つの分布の間のKullback-Leibler(KL)の相違を計算します。
        multinomial(a) 多項係数は、a1、a2、...を選ぶ方法の数を計算します。
        permutations(n [, k]) \(n\) 要素の集合から \(k\) 要素の順序付き部分集合を得る方法の数を計算する。\(_n P _r\)
        pickRandom(array) 1次元配列から、ランダムに1つ以上の値を選択します。
        random([min, max]) 一様分布を使用して、 min かつ max 未満の乱数を返します。
        randomInt([min, max]) 一様分布を使用して、 min かつ max 未満のランダムな整数を返します。


        Relational(比較) functions

        Function Description
        compare(x, y) 2つの値を比較します。
        deepEqual(x, y) 2つの行列が等しいかどうか、要素をテストする。
        equal(x, y) 2つの値が等しいかどうかをテストします。
        larger(x, y) 値 \(x\) が \(y\) より大きいかどうかをテストします。
        largerEq(x, y) 値 \(x\) が \(y\) より大きいか等しいかどうかをテストします。
        smaller(x, y) 値 \(x\) が \(y\) より小さいかどうかをテストします。
        smallerEq(x, y) 値 \(x\) が \(y\) より小さいか等しいかどうかをテストします。
        unequal(x, y) 2つの値が等しくないかどうかをテストします。


        Special(特殊) functions

        Function Description
        erf(x) さまざまな間隔のxについて合理的なチェビシェフ近似を使用して、値のerf関数を計算します。


        Statistics functions (統計)

        Function Description
        max(a, b, c, ...) 値を持つ行列またはリストの最大値を計算します。
        mean(a, b, c, ...) 行列の平均値または値を持つリストを計算します。
        median(a, b, c, ...) 値を持つ行列またはリストの中央値を計算します。
        min(a, b, c, ...) 行列の最大値または値のリストを計算します。
        mode(a, b, c, ...) 数値または数値(数値または文字)を含むリストのモードを計算します。
        prod(a, b, c, ...) 値を持つ行列またはリストの積を計算します。
        quantileSeq(A, prob[, sorted]) 行列または確率リストの PROB注文分位(prob order quantile) を計算します。
        std(a, b, c, ...) マトリクスまたはリストの標準偏差を値で計算します。
        sum(a, b, c, ...) 値を持つ行列またはリストの和を計算します。
        var(a, b, c, ...) 値を持つ行列またはリストの分散を計算します。




        Trigonometry(三角関数) functions

        Function Description
        acos(x) 値の逆余弦を計算します。
        acosh(x) \( acosh(x) = \log(sqrt(x^2 - 1) + x) \) と定義された値の双曲線逆コサインを計算します。
        acot(x) \( acot(x) = atan(1/x) \) と定義された値の逆コタンジェントを計算します。
        acoth(x) \( acoth(x) = atanh(1/x) = \frac{1}{2} \left ( \log \frac{x+1}{x} + \log \frac{x}{x-1} \right ) \) と定義される値の双曲線逆タンジェントを計算する。
        acsc(x) \( acsc(x) = asin(1/x) \) と定義された値の逆コセカントを計算します。
        acsch(x) \(acsch(x) = asinh(1/x) = \log( \frac{1}{x} + \sqrt{\frac{1}{x^2} + 1})\) と定義された値の双曲線逆コセカントを計算します。
        asec(x) ある値の逆セカントを計算します。
        asech(x) \( asech(x) = acosh(1/x) = \log( \sqrt(\frac{1}{x^2} - 1) + \frac{1}{x} ) \) と定義された値の双曲線逆セカントを計算します。
        asin(x) 値の逆サインを計算します。
        asinh(x) \( asinh(x) = \log (x + \sqrt{x^2 + 1}) \) と定義された値の双曲線逆サインを計算します。
        atan(x) 値の逆タンジェントを計算します。
        atan2(y, x) 2つの引数 y / x を使用して逆タンジェントを計算します。
        atanh(x) \( atanh(x) = \log(\frac{1 + x}{1 - x}) / 2 \) と定義された値の双曲線逆タンジェントを計算する。
        cos(x) 値のコサインを計算します。
        cosh(x) \( cosh(x) = \frac{1}{2} (e^x + e^{-x}) \) と定義された値の双曲線コサインを計算する。
        cot(x) 値のコタンジェントを計算します。
        coth(x) \( coth(x) = 1 / tanh(x) \) と定義された値の双曲線コタンジェントを計算します。
        csc(x) \( csc(x) = 1/sin(x) \) と定義された値のコセカントを計算します。
        csch(x) \( csch(x) = 1 / sinh(x) \) と定義された値の双曲線コセカントを計算する。
        sec(x) \( sec(x) = 1/cos(x) \) と定義された値のセカントを計算します。
        sech(x) \( sech(x) = 1 / cosh(x) \) と定義された値の双曲線セカントを計算します。
        sin(x) 値のサインを計算します。
        sinh(x) \( sinh(x) = \frac{1}{2} (e^x - e^{-x}) \) として定義される値の双曲線サインを計算します。
        tan(x) 値のタンジェントを計算します。
        tanh(x) \( tanh(x) = \frac{e^{2x} - 1}{e^{2x} + 1} \) と定義された値の双曲線タンジェントを計算する。


        Unit functions (単位)

        Function Description
        to(x, unit) 値の単位を変更します。

        Utils functions

        Function Description
        clone(x) オブジェクトをクローンします。
        isInteger(x) 値が整数かどうかをテストします。
        isNaN(x) 値がNaN(数値ではない)かどうかをテストします。
        isNegative(x) 値が負であるかどうかをテストする:ゼロより小さい。
        isNumeric(x) 値が数値かどうかをテストします。
        isPositive(x) 値が正であるかどうかをテストする:ゼロより大きい。
        isPrime(x) 値が素数かどうかをテストする:それ自身と1以外の除数はない。
        isZero(x) 値がゼロかどうかをテストします。
        typeof(x) 変数の型を決定します。



        単位 (units)

        Math.js comes with the following built-in units.

        Base Unit
        Length meter (m), inch (in), foot (ft), yard (yd), mile (mi), link (li), rod (rd), chain (ch), angstrom, mil
        Surface area m2, sqin, sqft, sqyd, sqmi, sqrd, sqch, sqmil, acre, hectare
        Volume m3, litre (l, L, lt, liter), cc, cuin, cuft, cuyd, teaspoon, tablespoon
        Liquid volume minim (min), fluiddram (fldr), fluidounce (floz), gill (gi), cup (cp), pint (pt), quart (qt), gallon (gal), beerbarrel (bbl), oilbarrel (obl), hogshead, drop (gtt)
        Angles rad (radian), deg (degree), grad (gradian), cycle, arcsec (arcsecond), arcmin (arcminute)
        Time second (s, secs, seconds), minute (mins, minutes), hour (h, hr, hrs, hours), day (days), week (weeks), month (months), year (years), decade (decades), century (centuries), millennium (millennia)
        Frequency hertz (Hz)
        Mass gram(g), tonne, ton, grain (gr), dram (dr), ounce (oz), poundmass (lbm, lb, lbs), hundredweight (cwt), stick, stone
        Electric current ampere (A)
        Temperature kelvin (K), celsius (degC), fahrenheit (degF), rankine (degR)
        Amount of substance mole (mol)
        Luminous intensity candela (cd)
        Force newton (N), dyne (dyn), poundforce (lbf), kip
        Energy joule (J), erg, Wh, BTU, electronvolt (eV)
        Power watt (W), hp
        Pressure Pa, psi, atm, torr, bar, mmHg, mmH2O, cmH2O
        Electricity and magnetism ampere (A), coulomb (C), watt (W), volt (V), ohm, farad (F), weber (Wb), tesla (T), henry (H), siemens (S), electronvolt (eV)
        Binary bit (b), byte (B)

        The following decimal prefixes are available.

        Name Abbreviation Value
        deca da 1e1
        hecto h 1e2
        kilo k 1e3
        mega M 1e6
        giga G 1e9
        tera T 1e12
        peta P 1e15
        exa E 1e18
        zetta Z 1e21
        yotta Y 1e24
        Name Abbreviation Value
        deci d 1e-1
        centi c 1e-2
        milli m 1e-3
        micro u 1e-6
        nano n 1e-9
        pico p 1e-12
        femto f 1e-15
        atto a 1e-18
        zepto z 1e-21
        yocto y 1e-24

        The following binary prefixes are available.
        They can be used with units bit (b) and byte (B).

        Name Abbreviation Value
        kibi Ki 1024
        mebi Mi 1024^2
        gibi Gi 1024^3
        tebi Ti 1024^4
        pebi Pi 1024^5
        exi Ei 1024^6
        zebi Zi 1024^7
        yobi Yi 1024^8
        Name Abbreviation Value
        kilo k 1e3
        mega M 1e6
        giga G 1e9
        tera T 1e12
        peta P 1e15
        exa E 1e18
        zetta Z 1e21
        yotta Y 1e24

        Physical Constants

        Math.js includes the following physical constants. See Wikipedia for more information.

        Universal constants

        Name Symbol Value Unit
        speedOfLight c 299792458 m · s-1
        gravitationConstant G 6.6738480e-11 m3 · kg-1 · s-2
        planckConstant h 6.626069311e-34 J · s
        reducedPlanckConstant h 1.05457172647e-34 J · s

        Electromagnetic constants

        Name Symbol Value Unit
        magneticConstant μ0 1.2566370614e-6 N · A-2
        electricConstant ε0 8.854187817e-12 F · m-1
        vacuumImpedance Z0 376.730313461 Ω
        coulomb κ 8.9875517873681764e9 N · m2 · C-2
        elementaryCharge e 1.60217656535e-19 C
        bohrMagneton μB 9.2740096820e-24 J · T-1
        conductanceQuantum G0 7.748091734625e-5 S
        inverseConductanceQuantum G0-1 12906.403721742 Ω
        magneticFluxQuantum f0 2.06783375846e-15 Wb
        nuclearMagneton μN 5.0507835311e-27 J · T-1
        klitzing RK 25812.807443484 Ω

        Atomic and nuclear constants

        Name Symbol Value Unit
        bohrRadius a0 5.291772109217e-11 m
        classicalElectronRadius re 2.817940326727e-15 m
        electronMass me 9.1093829140e-31 kg
        fermiCoupling GF 1.1663645e-5 GeV-2
        fineStructure α 7.297352569824e-3 -
        hartreeEnergy Eh 4.3597443419e-18 J
        protonMass mp 1.67262177774e-27 kg
        deuteronMass md 3.3435830926e-27 kg
        neutronMass mn 1.6749271613e-27 kg
        quantumOfCirculation h / (2me) 3.636947552024e-4 m2 · s-1
        rydberg R 10973731.56853955 m-1
        thomsonCrossSection 6.65245873413e-29 m2
        weakMixingAngle 0.222321 -
        efimovFactor 22.7 -

        Physico-chemical constants

        Name Symbol Value Unit
        atomicMass mu 1.66053892173e-27 kg
        avogadro NA 6.0221412927e23 mol-1
        boltzmann k 1.380648813e-23 J · K-1
        faraday F 96485.336521 C · mol-1
        firstRadiation c1 3.7417715317e-16 W · m2
        loschmidt n0 2.686780524e25 m-3
        gasConstant R 8.314462175 J · K-1 · mol-1
        molarPlanckConstant NA · h 3.990312717628e-10 J · s · mol-1
        molarVolume Vm 2.241396820e-10 m3 · mol-1
        sackurTetrode -1.164870823 -
        secondRadiation c2 1.438777013e-2 m · K
        stefanBoltzmann σ 5.67037321e-8 W · m-2 · K-4
        wienDisplacement b 2.897772126e-3 m · K

        Adopted values

        Name Symbol Value Unit
        molarMass Mu 1e-3 kg · mol-1
        molarMassC12 M(12C) 1.2e-2 kg · mol-1
        gravity gn 9.80665 m · s-2
        atm atm 101325 Pa

        Natural units

        Name Symbol Value Unit
        planckLength lP 1.61619997e-35 m
        planckMass mP 2.1765113e-8 kg
        planckTime tP 5.3910632e-44 s
        planckCharge qP 1.87554595641e-18 C
        planckTemperature TP 1.41683385e+32 K