diff lin_solve_dgr_3.m @ 0:a4a7e3405062

Import DDM code by Sašo Muševič
author Dan Stowell <dan.stowell@elec.qmul.ac.uk>
date Thu, 09 May 2013 20:04:15 +0100
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lin_solve_dgr_3.m	Thu May 09 20:04:15 2013 +0100
@@ -0,0 +1,26 @@
+% solve multiple 3rd degree linear systems at once - no pivoting!
+function dg3 = lin_solve_dgr_3(A,b,R)
+  nrm =  ...
+    + A(1,3,:) .* A(2,2,:) .* A(3,1,:) ...
+    - A(1,3,:) .* A(2,1,:) .* A(3,2,:) ...
+    + A(1,2,:) .* A(2,1,:) .* A(3,3,:) ...
+    - A(1,2,:) .* A(2,3,:) .* A(3,1,:) ...
+    + A(1,1,:) .* A(2,3,:) .* A(3,2,:) ...
+    - A(1,1,:) .* A(2,2,:) .* A(3,3,:);
+  dg3 = zeros(3,R);
+  dg3(1,:) = -(...
+    +b(3,1,:) .* ( A(1,2,:) .* A(2,3,:) - A(1,3,:) .* A(2,2,:) ) ...
+    -b(2,1,:) .* ( A(1,2,:) .* A(3,3,:) - A(1,3,:) .* A(3,2,:) ) ...
+    +b(1,1,:) .* ( A(2,2,:) .* A(3,3,:) - A(2,3,:) .* A(3,2,:) ) ...
+    ) ./ nrm;
+  dg3(2,:) = (...
+    +b(3,1,:) .* ( A(1,1,:) .* A(2,3,:) - A(1,3,:) .* A(2,1,:) ) ...
+    -b(2,1,:) .* ( A(1,1,:) .* A(3,3,:) - A(1,3,:) .* A(3,1,:) ) ...
+    +b(1,1,:) .* ( A(2,1,:) .* A(3,3,:) - A(2,3,:) .* A(3,1,:) ) ...
+    ) ./ nrm;
+  dg3(3,:) = -(...
+    +b(3,1,:) .* ( A(1,1,:) .* A(2,2,:) - A(1,2,:) .* A(2,1,:) ) ...
+    -b(2,1,:) .* ( A(1,1,:) .* A(3,2,:) - A(1,2,:) .* A(3,1,:) ) ...
+    +b(1,1,:) .* ( A(2,1,:) .* A(3,2,:) - A(2,2,:) .* A(3,1,:) ) ...
+    ) ./ nrm;
+end
\ No newline at end of file