主题:关于Matlab的矩阵的运算效率
以下是一个余度很大的高斯约当消元法Matlab实现,我不关心他的改进问题,而关心这个程序的效率问题,整个程序的运行耗时非常有意思,每次遇到K为2^n(也即方程为2^n阶时)时,程序会出现一个异常长的耗时,而后有回复正常的时间增长。我没有学过数值分析也不知道是否是必然,谁能不能解释一下这个现象?
function T=linear_solve(K,P)
A=[K P]; %线性方程的扩充系数矩阵
for i=1:size(A,1)
A(i,:)=A(i,:)/A(i,i);
for j=1:size(A,1)
if (i~=j)
A(j,:)=A(j,:)-A(j,i)*A(i,:);
end
end
end
T=A(:,size(A,2));
这是127-129阶方程的运行耗时
0.1003 0.1900 0.1082
这是255-257阶方程的运行耗时
1.0734 5.2123 1.1457
function T=linear_solve(K,P)
A=[K P]; %线性方程的扩充系数矩阵
for i=1:size(A,1)
A(i,:)=A(i,:)/A(i,i);
for j=1:size(A,1)
if (i~=j)
A(j,:)=A(j,:)-A(j,i)*A(i,:);
end
end
end
T=A(:,size(A,2));
这是127-129阶方程的运行耗时
0.1003 0.1900 0.1082
这是255-257阶方程的运行耗时
1.0734 5.2123 1.1457