Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
回复
 
主题工具 显示模式
旧 2008-07-17, 10:38   #1
honestapple
初级会员
 
注册日期: 2008-07-17
年龄: 46
帖子: 1
声望力: 0
honestapple 正向着好的方向发展
默认 [讨论]关于追赶法算法的执行速度

下面是两个程序都是执行追赶法求解三对角方程组,但是对同样的3X3矩阵,程序1用了3.8秒,程序2用了0.01秒,请教高手这个差别怎么会有如此大!
程序1
function x = trid( A, B )
% The function solves the tridiagonal system equation Ax = B with Thosmas
% algorithm
% The size of matrices A,B are supposed to be NA * NA and NA * NB
NA = size( A, 2 ); [ NB1, NB ] = size( B );
if NB1 ~= NA
error( 'A and B must have compatible dimensions' );
end
N = NA + NB;
AB = [ A( 1 : NA, 1 : NA ) B( 1 : NA, 1 : NB ) ]; % Augments matrix

for k = 2 : NA
AB( k - 1, k ) = AB( k - 1, k ) / AB( k - 1, k - 1 );
AB( k - 1, N ) = AB( k - 1, N ) / AB( k - 1, k - 1 );
AB( k - 1, k - 1 ) = 1;

AB( k, k ) = AB( k, k ) - AB( k, k - 1 ) * AB( k - 1, k );
AB( k, N ) = AB( k, N ) - AB( k, k - 1 ) * AB( k - 1, N );
AB( k, k - 1 ) = 0;
end

x( NA, : ) = AB( NA, N ) / AB( NA, NA );
for m = NA - 1 : -1 : 1
x( m, : ) = ( AB( m, N ) - AB( m, m + 1 ) * x( m + 1, : ) ) / AB( m, m );
end
程序2
function x = trid( A, b )
% solve tridiagonal system of equations
N = size( A, 2 );
for m = 2 : N % Upper Triangularization
tmp = A( m, m - 1 ) / A( m - 1, m - 1 );
A( m, m ) = A( m, m ) -A( m - 1, m ) * tmp; A( m, m - 1 ) = 0;
b( m, : ) = b( m, : ) -b( m - 1, : ) * tmp;
end
x( N, : ) = b( N, : ) / A( N, N );
for m = N - 1 : -1 : 1 % Back Substitution
x( m, : ) = ( b( m, : ) -A( m, m + 1 ) * x( m + 1 ) ) / A( m, m );
end
honestapple 当前离线   回复时引用此帖
旧 2008-07-20, 03:26   #2
fanxing39
高级会员
 
注册日期: 2007-12-02
年龄: 44
帖子: 303
声望力: 31
fanxing39 是一位成功的新星fanxing39 是一位成功的新星fanxing39 是一位成功的新星fanxing39 是一位成功的新星
默认

速度不一样的原因可能是 第二程序中 多用到的是矩阵的乘法,所以运算速度快些,因为所要存储的空间是一定的,而第一个程序 每次存储的空间被多次覆盖,所以运算速度就慢了。
我一般些程序都喜欢用 矩阵的乘法,一来程序简约,二来,运算速度快很多
fanxing39 当前离线   回复时引用此帖
回复


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码



所有时间均为北京时间。现在的时间是 10:53


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.