aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYann Herklotz <ymherklotz@gmail.com>2017-02-07 19:59:51 +0000
committerYann Herklotz <ymherklotz@gmail.com>2017-02-07 19:59:51 +0000
commit6ffc7cae499bc273d05bb6cfc4f38b202553b50c (patch)
treea76eb60c6d0dff42568de285715c3d003b51f6d3
parent0ca9a206e1dcef5d7d64a5700a2c7092da043038 (diff)
downloadNumericalAnalysis-6ffc7cae499bc273d05bb6cfc4f38b202553b50c.tar.gz
NumericalAnalysis-6ffc7cae499bc273d05bb6cfc4f38b202553b50c.zip
Added matrix solver
-rw-r--r--Part 3/scripts/finite_script.m2
-rw-r--r--Part 3/scripts/solvetridiag.m34
2 files changed, 36 insertions, 0 deletions
diff --git a/Part 3/scripts/finite_script.m b/Part 3/scripts/finite_script.m
new file mode 100644
index 0000000..5569cee
--- /dev/null
+++ b/Part 3/scripts/finite_script.m
@@ -0,0 +1,2 @@
+% This script implements the finite difference method.
+
diff --git a/Part 3/scripts/solvetridiag.m b/Part 3/scripts/solvetridiag.m
new file mode 100644
index 0000000..eca7d3f
--- /dev/null
+++ b/Part 3/scripts/solvetridiag.m
@@ -0,0 +1,34 @@
+function x = solvetridiag(N,a,b,c,vec)
+
+%
+%
+% Use this function to solve a tridiagonal matrix equation
+% of the form: Tx=v;
+%
+% T is a tridiagonal matrix with entries [a, b, c]
+% on the three non-zero diagonals
+%
+% v is the right hand side vector
+%
+% N is the number of equations
+%
+%
+%**************************************************************
+
+ diag=ones(N,1)*b;
+ x=zeros(N,1);
+
+ for k = 1:N-1
+ p=diag(k);
+ m=a/p;
+ diag(k+1)=diag(k+1)-m*c;
+ vec(k+1)=vec(k+1)-m*vec(k);
+ end
+
+ x(N)=vec(N)/diag(N);
+
+ for k = N-1:-1:1
+ x(k)=(vec(k)-c*x(k+1))/diag(k);
+ end
+
+return \ No newline at end of file