| (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]; | |
| } | |
| }; | |
| })() |