diff -r efd9c589177a -r c0b4a8b5a012 toolkit/javascript/d3/lib/science/science.lin.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/toolkit/javascript/d3/lib/science/science.lin.js Thu Apr 10 14:20:23 2014 +0200 @@ -0,0 +1,27 @@ +(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]; + } +}; +})() \ No newline at end of file