No effect is observed when I try to use StartVector in eigs to improve numerical efficiency
I test the efficiency of using a good StartVector in eigs.
The code is quite simple.
First, I use eigs to figure out the eigenvector v1,
then I use this eigenvector v1 as the StartVector to run eigs again.
I expect that much less time might be needed now.
Nevertheless,
the time cost shows no improvement at all.
My code is as follows
———————————————————————-
format long
n = 3000;
A = rand(n,n);
A = A + A’;
tic
[v1,eta1]=eigs(@(vec)test_eigs(vec,A),n,1,’lm’,’Display’,0,’IsFunctionSymmetric’,0,’MaxIterations’,300);
toc
StartVector = v1;
tic
[v2,eta2]=eigs(@(vec)test_eigs(vec,A),n,1,’lm’,’Display’,0,’IsFunctionSymmetric’,0,’MaxIterations’,300,’StartVector’,StartVector);
toc
eta1
eta2
function vec1 = test_eigs(vec0,A)
vec1 = A * vec0;
end
————————————————————————————
The output is as follows
~~~~~~~~~~~~~~~~~~~~~~
Elapsed time is 0.069811 seconds.
Elapsed time is 0.066047 seconds.
eta1 =
3.000980119229400e+03
eta2 =
3.000980119229400e+03
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
So my question is,
is there anything wrong in my understanding about StartVector in eigs?
Any suggestion or comment would be greatly appreciated.I test the efficiency of using a good StartVector in eigs.
The code is quite simple.
First, I use eigs to figure out the eigenvector v1,
then I use this eigenvector v1 as the StartVector to run eigs again.
I expect that much less time might be needed now.
Nevertheless,
the time cost shows no improvement at all.
My code is as follows
———————————————————————-
format long
n = 3000;
A = rand(n,n);
A = A + A’;
tic
[v1,eta1]=eigs(@(vec)test_eigs(vec,A),n,1,’lm’,’Display’,0,’IsFunctionSymmetric’,0,’MaxIterations’,300);
toc
StartVector = v1;
tic
[v2,eta2]=eigs(@(vec)test_eigs(vec,A),n,1,’lm’,’Display’,0,’IsFunctionSymmetric’,0,’MaxIterations’,300,’StartVector’,StartVector);
toc
eta1
eta2
function vec1 = test_eigs(vec0,A)
vec1 = A * vec0;
end
————————————————————————————
The output is as follows
~~~~~~~~~~~~~~~~~~~~~~
Elapsed time is 0.069811 seconds.
Elapsed time is 0.066047 seconds.
eta1 =
3.000980119229400e+03
eta2 =
3.000980119229400e+03
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
So my question is,
is there anything wrong in my understanding about StartVector in eigs?
Any suggestion or comment would be greatly appreciated. I test the efficiency of using a good StartVector in eigs.
The code is quite simple.
First, I use eigs to figure out the eigenvector v1,
then I use this eigenvector v1 as the StartVector to run eigs again.
I expect that much less time might be needed now.
Nevertheless,
the time cost shows no improvement at all.
My code is as follows
———————————————————————-
format long
n = 3000;
A = rand(n,n);
A = A + A’;
tic
[v1,eta1]=eigs(@(vec)test_eigs(vec,A),n,1,’lm’,’Display’,0,’IsFunctionSymmetric’,0,’MaxIterations’,300);
toc
StartVector = v1;
tic
[v2,eta2]=eigs(@(vec)test_eigs(vec,A),n,1,’lm’,’Display’,0,’IsFunctionSymmetric’,0,’MaxIterations’,300,’StartVector’,StartVector);
toc
eta1
eta2
function vec1 = test_eigs(vec0,A)
vec1 = A * vec0;
end
————————————————————————————
The output is as follows
~~~~~~~~~~~~~~~~~~~~~~
Elapsed time is 0.069811 seconds.
Elapsed time is 0.066047 seconds.
eta1 =
3.000980119229400e+03
eta2 =
3.000980119229400e+03
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
So my question is,
is there anything wrong in my understanding about StartVector in eigs?
Any suggestion or comment would be greatly appreciated. eigs MATLAB Answers — New Questions