about summary refs log tree commit diff
path: root/usth/MATH2.4/labwork/3/subst.m
diff options
context:
space:
mode:
Diffstat (limited to 'usth/MATH2.4/labwork/3/subst.m')
-rw-r--r--usth/MATH2.4/labwork/3/subst.m17
1 files changed, 17 insertions, 0 deletions
diff --git a/usth/MATH2.4/labwork/3/subst.m b/usth/MATH2.4/labwork/3/subst.m
new file mode 100644
index 0000000..5c6e783
--- /dev/null
+++ b/usth/MATH2.4/labwork/3/subst.m
@@ -0,0 +1,17 @@
+function x = subst (aug)
+  [m n] = size (aug);
+  x = zeros (m, 1);
+  if (istril (aug))
+    x(m) = aug(1, n) / aug(1, m);
+    for k = 2 : m
+      x(k) = (aug(k, n) - aug(k, k+1:m)*x(1:k-1)) / aug(k, k);
+    end
+  elseif (istriu (aug))
+    x(m) = aug(m, n) / aug(m, m);
+    for k = m - 1 : -1 : 1
+      x(k) = (aug(k, n) - aug(k, k+1:m)*x(k+1:m)) / aug(k, k);
+    end
+  else
+    error ('aug must be a triangular matrix');
+  end
+end