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 submatrix 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(:,n1);
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 34 iterations really.
Nasser
