diff options
author | Yann Herklotz <ymherklotz@gmail.com> | 2017-02-07 19:59:51 +0000 |
---|---|---|
committer | Yann Herklotz <ymherklotz@gmail.com> | 2017-02-07 19:59:51 +0000 |
commit | 6ffc7cae499bc273d05bb6cfc4f38b202553b50c (patch) | |
tree | a76eb60c6d0dff42568de285715c3d003b51f6d3 | |
parent | 0ca9a206e1dcef5d7d64a5700a2c7092da043038 (diff) | |
download | NumericalAnalysis-6ffc7cae499bc273d05bb6cfc4f38b202553b50c.tar.gz NumericalAnalysis-6ffc7cae499bc273d05bb6cfc4f38b202553b50c.zip |
Added matrix solver
-rw-r--r-- | Part 3/scripts/finite_script.m | 2 | ||||
-rw-r--r-- | Part 3/scripts/solvetridiag.m | 34 |
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 |