X-Git-Url: http://gitweb.michael.orlitzky.com/?p=octave.git;a=blobdiff_plain;f=diffusion_matrix_sparse.m;fp=diffusion_matrix_sparse.m;h=dbe4e2a53a0c4af68a0374f7782dd9c5b7baab85;hp=0000000000000000000000000000000000000000;hb=4c1c0fdc1eab7fbe1e322ff651e9c98357a8ce15;hpb=542e0bbc0bcde79e1366d4280cc0637cd43586d1 diff --git a/diffusion_matrix_sparse.m b/diffusion_matrix_sparse.m new file mode 100644 index 0000000..dbe4e2a --- /dev/null +++ b/diffusion_matrix_sparse.m @@ -0,0 +1,26 @@ +function K = diffusion_matrix_sparse(integerN) + ## + ## A sparse representation of the matrix K in the advection-diffusion + ## equation. See advection_matrix.m for details. + ## + + if (integerN < 2) + K = NA; + return + end + + ## The negative ones directly above the diagonal. + top = [ [zeros(integerN-1, 1), -speye(integerN-1)]; ... + zeros(1, integerN)]; + + ## The negative ones directly below the diagonal. + bottom = [ [zeros(1, integerN-1); ... + -speye(integerN-1) ], zeros(integerN, 1)]; + + ## Combine the top and bottom. + K = top + bottom + 2*speye(integerN); + + ## Fill in the entries in the corner. + K(1, integerN) = -1; + K(integerN, 1) = -1; +end