27 строки
599 B
JavaScript
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];
|
|
}
|
|
};
|
|
})() |