toolkit/javascript/d3/lib/science/science.lin.js
changeset 47 c0b4a8b5a012
--- /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