Nine Pedestrians Mesmerized
    Have ideas to improve npm?Join in the discussion! »

    math-interpolate
    TypeScript icon, indicating that this package has built-in type declarations

    5.0.0 • Public • Published

    math-interpolate

    Install

    $ yarn add math-interpolate
    

    Interpolation cases usage

    So, you can use methods below

    linear

    import { linear } from 'math-interpolate'
     
    console.log(linear({ x: 0.5, x1: 0, y1: 1, x2: 1, y2: 2 }))
    // 1.5

    This example description

              |
    y2= 2     |                           o
              |
    y= ?      |             o
    (1.5 will be found)
    y1= 1     o
              |
              ------------------------------------
              x1= 0         x= 0.5        x2= 1
    

    bilinear

    import { bilinear } from 'math-interpolate'
     
    console.log(
      bilinear({
        x1: 1,
        q11: 400,
        q12: 410,
        y1: 1,
        x2: 6,
        q21: 210,
        q22: 590,
        y2: 5,
        x: 3,
        y: 3.5,
      }),
    )
    // 377.75

    This example description

              |   q12= 410                q22= 590
    y2= 5     |   o                       o
              |
              |           q= ? (377.75 will be found)
    y= 3.5    |           o
              |
              |   q11= 400                q21= 210
    y1= 1     |   o                       o
              ------------------------------------
                  x1= 1   x= 3            x2= 6
    

    And also, you can read more about bilinear interpolation on wiki.

    byInternalTable

    Interpolate by table (only internal table values gives correct result) for example

    import { byInternalTable } from 'math-interpolate'
     
    const temperature = -21.0
    const percentage = 20.0
    /*
      About table below:
      1st horizontal line (highest row as x axis) - temperature conditions template
      1st vertical column (first left column as y axis) - percentage conditions template
    */
    const tableAsDoubleArray = [
      [0.0, -30, -20.0, -10.0, 0.0, 20.0, 40.0, 60.0, 80.0, 100.0],
      [0.0, 4.19, 4.19, 4.19, 4.19, 4.19, 4.19, 4.19, 4.19, 4.19],
      [25.0, 3.93, 3.93, 3.93, 3.95, 3.98, 4.0, 4.03, 4.05, 4.08],
      [37.0, 3.68, 3.68, 3.7, 3.72, 3.77, 3.82, 3.88, 3.94, 4.0],
      [45.0, 3.49, 3.49, 3.52, 3.56, 3.62, 3.69, 3.76, 3.82, 3.89],
    ]
     
    console.log(
      byInternalTable({
        x: temperature,
        y: percentage,
        tableAsDoubleArray,
      }),
    )
    // 3.982

    getKB

    import { getKB } from 'math-interpolate'
     
    console.log(
      getKB({
        x1: 1,
        y1: 1,
        x2: 6,
        y2: 5,
      }),
    )
    // { k: -0.8,
    //   b: 1.8 }

    getCommonPointByBisectionMethod

    import { getCommonPointByBisectionMethod } from 'math-interpolate'
     
    console.log(
      getCommonPointByBisectionMethod({
        fn1: (x) => x,
        fn2: (x) => -x,
        xMin: -200, // -1000 by default
        xMax: 200, // 1000 by default
        eps: 0.001, // 0.001 by default (accuracy)
        iMax: 1000, // 1000 by default (max iterations number)
      }),
    )
    // { error: false,
    //   x: ~0,
    //   y: ~0 }

    This example description

              |
    y2= 2     o                           o
              |
    y= ?      |             o
    (~1.5 will be found)
    y1= 1     o                           o
              |
              ------------------------------------
              x1= 0         x= ?          x2= 1
                            (~0.5 will be found)
    
    import { getKB, getCommonPointByBisectionMethod } from 'math-interpolate'
     
    const { k: k1, b: b1 } = getKB({ x1: 0, y1: 1, x2: 1, y2: 2 })
    const { k: k2, b: b2 } = getKB({ x1: 0, y1: 2, x2: 1, y2: 1 })
    const fn1 = (x) => k1 * x + b1
    const fn2 = (x) => k2 * x + b2
     
    console.log(
      getCommonPointByBisectionMethod({
        fn1,
        fn2,
      }),
    )
    // { error: false, // & description field if true
    //   x: 0.5002021789550781,
    //   y: 1.5002021789550781 }

    Commands

    • npm run clean - Remove lib/ directory
    • npm test - Run tests with linting and coverage results.
    • npm test:only - Run tests without linting or coverage.
    • npm test:watch - You can even re-run tests on file changes!
    • npm test:prod - Run tests with minified code.
    • npm run test:examples - Test written examples on pure JS for better understanding module usage.
    • npm run lint - Run ESlint with airbnb-config
    • npm run cover - Get coverage report for your code.
    • npm run build - Babel will transpile ES6 => ES5 and minify the code.
    • npm run prepublish - Hook for npm. Do all the checks before publishing your module.

    License

    MIT © Den Pol

    Install

    npm i math-interpolate

    DownloadsWeekly Downloads

    4

    Version

    5.0.0

    License

    MIT

    Unpacked Size

    27.1 kB

    Total Files

    55

    Last publish

    Collaborators

    • avatar