{"id":428,"date":"2017-09-14T12:17:46","date_gmt":"2017-09-14T15:17:46","guid":{"rendered":"http:\/\/www.professores.uff.br\/diomarcesarlobao\/?page_id=428"},"modified":"2017-09-14T12:17:46","modified_gmt":"2017-09-14T15:17:46","slug":"splu-m","status":"publish","type":"page","link":"https:\/\/www.professores.uff.br\/diomarcesarlobao\/splu-m\/","title":{"rendered":"splu.m"},"content":{"rendered":"<pre>function [P, L, U, sign] = splu(A)\r\n\r\n% splu  Square PA=LU factorization *with row exchanges*.\r\n%\r\n% [P, L, U] = splu(A), for a square, invertible matrix A,\r\n% uses Gaussian elimination to compute a permutation\r\n% matrix P, a lower triangular matrix L and \r\n% an upper triangular matrix U so that P*A = L*U.\r\n% P, L and U are the same size as A.\r\n% sign = det(P); it is 1 or -1.\r\n%\r\n% See also slu, lu, rref, partic, nulbasis, colbasis.\r\n\r\n[m, n] = size(A);\r\nif m ~= n\r\n   error('Matrix must be square.')\r\nend\r\nP = eye(n, n);\r\nL = eye(n, n);\r\nU = zeros(n, n);\r\ntol = sqrt(eps);\r\nsign = 1;\r\n\r\nfor k = 1:n\r\n   if abs(A(k, k)) &lt; tol\r\n      for r = k:n\r\n         if abs(A(r, k)) &gt;= tol\r\n            break\r\n         end\r\n         if r == n\r\n            if nargout == 4\r\n               sign = 0;\r\n               return\r\n            else\r\n               disp('A is singular within tolerance.')\r\n               error(['No pivot in column ' int2str(k) '.'])\r\n            end\r\n         end\r\n      end\r\n      A([r k], 1:n) = A([k r], 1:n);\r\n      if k &gt; 1, L([r k], 1:k-1) = L([k r], 1:k-1); end\r\n      P([r k], 1:n) = P([k r], 1:n);\r\n      sign = -sign;\r\n   end\r\n   for i = k+1:n\r\n      L(i, k) = A(i, k) \/ A(k, k);\r\n      for j = k+1:n\r\n         A(i, j) = A(i, j) - L(i, k)*A(k, j);\r\n      end\r\n   end\r\n   for j = k:n\r\n      U(k, j) = A(k, j) * (abs(A(k, j)) &gt;= tol);\r\n   end\r\nend\r\n\r\nif nargout &lt; 4\r\n   roworder = P*(1:n)';\r\n   disp('Pivots in rows:'), disp(roworder'); end\r\nend<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>function [P, L, U, sign] = splu(A) % splu Square PA=LU factorization *with row exchanges*. % % [P, L, U] = splu(A), for a square, invertible matrix A, % uses Gaussian elimination to compute a permutation % matrix P, a lower triangular matrix L and % an upper triangular matrix U so that P*A = [&hellip;]<\/p>\n","protected":false},"author":22,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"footnotes":""},"categories":[],"tags":[],"class_list":["post-428","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.professores.uff.br\/diomarcesarlobao\/wp-json\/wp\/v2\/pages\/428","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.professores.uff.br\/diomarcesarlobao\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.professores.uff.br\/diomarcesarlobao\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.professores.uff.br\/diomarcesarlobao\/wp-json\/wp\/v2\/users\/22"}],"replies":[{"embeddable":true,"href":"https:\/\/www.professores.uff.br\/diomarcesarlobao\/wp-json\/wp\/v2\/comments?post=428"}],"version-history":[{"count":1,"href":"https:\/\/www.professores.uff.br\/diomarcesarlobao\/wp-json\/wp\/v2\/pages\/428\/revisions"}],"predecessor-version":[{"id":429,"href":"https:\/\/www.professores.uff.br\/diomarcesarlobao\/wp-json\/wp\/v2\/pages\/428\/revisions\/429"}],"wp:attachment":[{"href":"https:\/\/www.professores.uff.br\/diomarcesarlobao\/wp-json\/wp\/v2\/media?parent=428"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.professores.uff.br\/diomarcesarlobao\/wp-json\/wp\/v2\/categories?post=428"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.professores.uff.br\/diomarcesarlobao\/wp-json\/wp\/v2\/tags?post=428"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}