Path: news.mathworks.com!newsfeed-00.mathworks.com!news.tele.dk!feed118.news.tele.dk!news.tele.dk!small.news.tele.dk!newsfeed.xs4all.nl!newsfeed4.news.xs4all.nl!xs4all!news.stack.nl!aioe.org!.POSTED!not-for-mail From: <HIDDEN> Newsgroups: comp.soft-sys.matlab Subject: Re: Iterative Procedure Using Vectors Date: Fri, 26 Apr 2013 02:26:57 -0500 Organization: Aioe.org NNTP Server Lines: 67 Message-ID: <klda83$g24$1@speranza.aioe.org> References: <klbqnr$mdk$1@newscl01ah.mathworks.com> Reply-To: <HIDDEN> NNTP-Posting-Host: IcbzAjffnWaq9tw6UJPbag.user.speranza.aioe.org Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Complaints-To: abuse@aioe.org User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:17.0) Gecko/20130328 Thunderbird/17.0.5 X-Notice: Filtered by postfilter v. 0.8.2 Xref: news.mathworks.com comp.soft-sys.matlab:794387 On 4/25/2013 12:56 PM, Laura wrote: > I have been told to carry out the following iterative procedure: > a) Set a vector v to be the vector [1 ; 0] > b) Find a new vector u = Av (where A is a 2 x 2 real matrix) > c) Find the magnitude of this new vector u, and call this magnitude c > d) Divide u by c > e) Set v to be this unit vector, then repeat steps b) to e) a number of times. > > So far I have tried: > v(1) = [1 ; 0] > for n = 1:100 > u(n) = A*v(n+1) > c(n) = norm(u(n)) > v(n+1) = u(n)/c(n) > end > > However, it doesn't seem to like the v(1) part and keeps saying sub-matrix error, >probably because it thinks that I am referring to the first element in the vector >instead of saying v = [1 ; 0] is the initial condition. Does anyone know how I can do this? > Also I'm not sure if the rest of it works ... > There is nothing in the HW instructions that says you need to keep track of all the v's. So why not just --------------------- v = [1;0]; A = rand(2); for n = 1:10 u = A*v; v = u/norm(u) end ------------------ If you need to save all the v's, then try -------------------------- N = 10; v = zeros(2,N); v(:,1) = [1;0]; A = rand(2); for n = 2:N u = A*v(:,n-1); v(:,n) = u/norm(u); end -------------------- EDU>> v' ans = 1.000000000000000 0 0.942479907869958 0.334262805680553 0.941008227921574 0.338383680138241 0.940991359516029 0.338430585668871 0.940991167526323 0.338431119487329 0.940991165341345 0.338431125562555 0.940991165316478 0.338431125631695 0.940991165316195 0.338431125632482 0.940991165316192 0.338431125632491 0.940991165316192 0.338431125632491 that is a good convergence. You only need 3-4 iterations really. --Nasser