d3/lib/science/science.lin.js

27 строки
599 B
JavaScript

(function(){science.lin = {};
/**
* Solves tridiagonal systems of linear equations.
*
* Source: http://en.wikipedia.org/wiki/Tridiagonal_matrix_algorithm
*
* @param {number[]} a
* @param {number[]} b
* @param {number[]} c
* @param {number[]} d
* @param {number[]} x
* @param {number} n
*/
science.lin.tridag = function(a, b, c, d, x, n) {
var i,
m;
for (i = 1; i < n; i++) {
m = a[i] / b[i - 1];
b[i] -= m * c[i - 1];
d[i] -= m * d[i - 1];
}
x[n - 1] = d[n - 1] / b[n - 1];
for (i = n - 2; i >= 0; i--) {
x[i] = (d[i] - c[i] * x[i + 1]) / b[i];
}
};
})()