Matrix power vs for loop

3 Ansichten (letzte 30 Tage)
L
L am 26 Jun. 2023
Beantwortet: James Tursa am 26 Jun. 2023
Hi.
I have to iterate a linear system of the type x(k+1) = Ax(k), with x being a vector of 1024 elements. I only care about the last vector obtained, this is, x(endtime).
What would be faster?
x0 =rand(1024,1)
x = x0;
for i = 1:endtime
x = A*x
end
or
x = (A^endtime) * x0
Thanks.

Akzeptierte Antwort

Angelo Yeo
Angelo Yeo am 26 Jun. 2023
Hi Luisa,
If you only want to calculate the time it took to run a snippet of code, you can use tic and toc. Below is an example. You can see the latter one is faster.
endtime = 10000;
A = rand(1024, 1024);
case1 = tic;
x0 =rand(1024,1);
x = x0;
for i = 1:endtime
x = A*x;
end
toc(case1)
Elapsed time is 1.614399 seconds.
case2 = tic;
x = (A^endtime) * x0;
toc(case2)
Elapsed time is 0.245417 seconds.

Weitere Antworten (1)

James Tursa
James Tursa am 26 Jun. 2023
Note that the A^endtime method is probably going to be more accurate as endtime gets larger. The loop method can have a tendancy to build up errors.

Kategorien

Mehr zu Quadratic Programming and Cone Programming finden Sie in Help Center und File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by