function [L,U] = lu_decompose(A) % lu decompose % L:下三角矩阵 % U:上三角矩阵 % A:输入矩阵 [m,n]=size(A); L=eye(m); L(:,1)=A(:,1)/A(1,1);%L第一列赋值 U=zeros(m,n); U(1,:)=A(1,:);%U第一行赋值 for i=2:m for j=2:n if i<=j U(i,j)=A(i,j)-sum(L(i,1:i-1).*U(1:i-1,j)');%递推表达式(1-6) else if U(j,j)==0 L(i,j)=0; else L(i,j)=(A(i,j)-sum(L(i,1:j-1).*U(1:j-1,j)'))/U(j,j);%递推表达式(1-7) end end end end end 计算量分析
时间: 2023-08-26 13:05:21 浏览: 74
LU_decompose.c
lu_decompose 函数的计算量分析如下:
1. 第1行获取矩阵 A 的大小,需要常数时间。
2. 第2行初始化下三角矩阵 L,并将 L 的第一列赋值为 A 的第一列除以 A(1,1),需要 m-1 次乘法和 m-1 次除法。
3. 第3行初始化上三角矩阵 U,并将 U 的第一行赋值为 A 的第一行,需要 n-1 次赋值操作。
4. 第4行到第14行的两个嵌套循环,需要执行 (m-1) × (n-1) 次循环迭代。
5. 在循环中,当 i <= j 时,需要执行递推表达式(1-6),其中包含 i-1 次乘法、i-1 次加法和 i-1 次取数操作。
6. 在循环中,当 i > j 时,需要执行递推表达式(1-7),其中包含 j-1 次乘法、j-1 次加法、1 次除法和 j-1 次取数操作。
综上所述,lu_decompose 函数的总计算量为:
(m-1) × (n-1) × [(i-1)×3 + (j-1)×4 + 1]
其中,i 和 j 分别是循环变量的当前值。
阅读全文