I have created a function
function [u,yhat] = power_method(M,y0,TOL) uvec=zeros(1,100); j=0; y=y0; y=M*y; u=norm(y, inf); yhat=y/u; uvec(j+1)=u; j=j+1; y=M*yhat; u=norm(y, inf); yhat=y/u; uvec(j+1)=u; j=j+1; U=abs(uvec(j)-uvec(j-1)); while U>TOL y=M*yhat; u=norm(y, inf); yhat=y/u; uvec(j+1)=u; j=j+1; U=abs(uvec(j)-uvec(j-1)); end uvec=uvec(1:j)end
I left the colon off the end of uvec so it would show me the output, which it does.
M=[-2 1 0 0; 1 -2 1 0; 0 1 -2 1; 0 0 1 -2];y0=[1; 0; 0; 0];TOL=10^-5;[u,yhat] = power_method(M,y0,TOL)
It seems to work and I get results that look okay, however uvec is not in my workspace and when i try to call it after it displays:
Unrecognized function or variable 'uvec'.
Even though it displays it in the output of the above. Also j isnt stored.
I have put break points in and different places and the while loop is running as I'd expect and is storing the values at each iteration but once it exits the while loop it isnt stored. Why could this be?
Best Answer