toolkit/javascript/d3/lib/science/science.lin.js
changeset 47 c0b4a8b5a012
equal deleted inserted replaced
46:efd9c589177a 47:c0b4a8b5a012
       
     1 (function(){science.lin = {};
       
     2 /**
       
     3  * Solves tridiagonal systems of linear equations.
       
     4  *
       
     5  * Source: http://en.wikipedia.org/wiki/Tridiagonal_matrix_algorithm
       
     6  *
       
     7  * @param {number[]} a
       
     8  * @param {number[]} b
       
     9  * @param {number[]} c
       
    10  * @param {number[]} d
       
    11  * @param {number[]} x
       
    12  * @param {number} n
       
    13  */
       
    14 science.lin.tridag = function(a, b, c, d, x, n) {
       
    15   var i,
       
    16       m;
       
    17   for (i = 1; i < n; i++) {
       
    18     m = a[i] / b[i - 1];
       
    19     b[i] -= m * c[i - 1];
       
    20     d[i] -= m * d[i - 1];
       
    21   }
       
    22   x[n - 1] = d[n - 1] / b[n - 1];
       
    23   for (i = n - 2; i >= 0; i--) {
       
    24     x[i] = (d[i] - c[i] * x[i + 1]) / b[i];
       
    25   }
       
    26 };
       
    27 })()