///A 为矩阵,这里写成一维数组,如 [1],[1,2,3,4] function GetLU(a) { var n = a.length;//矩阵的总数据数目 var s = Math.sqrt(n);//矩阵的阶数 var L = new Array(n); var U = new Array(n); if (GetDet(a) != 0) { var allOrderNotEqulesZero = true; for (var i = 0; i < s; i++) { if (GetDe…
朴素高斯消去法: function x = GauElim(n, A, b) if nargin < 2 for i = 1 : 1 : n for j = 1 : 1 : n A(i, j) = 1 / (i + j - 1); end b(i, 1) = 1; end end for j = 1 : n - 1 if abs(A(j, j)) < eps; error('zero pivot encountered'); end for i = j + 1 : n mult = A(i,…
接着上次LU分解的讲解,这次给出使用不同的计算LU分解的方法,这种方法称为基于GaxPy的计算方法.这里需要了解lapapck中的一些函数.lapack中有一个函数名为gaxpy,所对应的矩阵计算公式是:x = Gx + y; 对应的Matlab代码如下: function[L, U] =zgaxpylu(A) %calculate LU decomposition based on Gaxpy operation %the same way as zlu.m but differnt appr…
1/6 LU 分解 LU 分解可以写成A = LU,这里的L代表下三角矩阵,U代表上三角矩阵.对应的matlab代码如下: function[L, U] =zlu(A) % ZLU - LU decomposition for matrix A % work as gauss elimination [m, n] = size(A); if m ~= n error('Error, current time only support square matrix')…
作者:凯鲁嘎吉 - 博客园http://www.cnblogs.com/kailugaji/ 三.实验程序 五.解答(按如下顺序提交电子版) 1.(程序) (1)LU分解源程序: function [l,u]=lu12(a,n) for k=1:n-1 for i=k+1:n a(i,k)=a(i,k)/a(k,k); for j=k+1:n a(i,j)=a(i,j)-a(i,k)*a(k,j); end end end l=eye(n); u=zeros(n,n); for k=1:n fo…