![]() |
Power Method in MATLAB
<p>I would like to implement the <a href="http://mathfaculty.fullerton.edu/mathews//n2003/PowerMethodMod.html" rel="nofollow">Power Method</a> for determining the dominant eigenvalue and eigenvector of a matrix in MATLAB.</p>
<p>Here's what I wrote so far:</p> <pre><code>%function to implement power method to compute dominant %eigenvalue/eigenevctor function [m,y_final]=power_method(A,x); m=0; n=length(x); y_final=zeros(n,1); y_final=x; tol=1e-3; while(1) mold=m; y_final=A*y_final; m=max(y_final); y_final=y_final/m; if (m-mold)<tol break; end end end </code></pre> <p>With the above code, here is a numerical example:</p> <pre><code> A=[1 1 -2;-1 2 1; 0 1 -1] A = 1 1 -2 -1 2 1 0 1 -1 >> x=[1 1 1]; >> x=x'; >> [m,y_final]=power_method(A,x); >> A*x ans = 0 2 0 </code></pre> <p>When comparing with the eigenvalues and eigenvectors of the above matrix in MATLAB, I did:</p> <pre><code>[V,D]=eig(A) V = 0.3015 -0.8018 0.7071 0.9045 -0.5345 0.0000 0.3015 -0.2673 0.7071 D = 2.0000 0 0 0 1.0000 0 0 0 -1.0000 </code></pre> <p>The eigenvalue coincides, but the eigenvector should be approaching <code>[1/3 1 1/3]</code>. Here, I get:</p> <pre><code> y_final y_final = 0.5000 1.0000 0.5000 </code></pre> <p>Is this acceptable to see this inaccuracy, or am I making some mistake? </p> [url=https://stackoverflow.com/questions/29198277/power-method-in-matlab]More...[/url] |
所有时间均为北京时间。现在的时间是 19:49。 |
Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.