power method with rayleigh coeff
    6 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
    Sonali
 el 12 de Abr. de 2024
  
    
    
    
    
    Comentada: Sonali
 el 14 de Abr. de 2024
            Hello, I'm working on Rayleigh iteration and my program is as follows. I am getting wrong values. I was wondering if someone could suggest something.
function [eigval, eigvec,itern] = rayl(A, x0, tol, nmax)
    x = x0;
    iter = 0;
    e0 = 0;
    while iter < nmax
        y = A * x;
        en = (x' * y) / (x' * x); 
        if abs(en - e0) <= tol
            break;
        end
        x = y / norm(y); 
        e0 = en;
        iter = iter + 1;
    end
    eigval = en;
    eigvec = x;
    itern =iter;
end
.........................................................................
Calling in function:
A=[4 1 -1 0;1 3 -1 0;-1 -1 5 2;0 0 2 4]
tol=1.d-8;  nmax=100; x0=[1 1 1 1]';
[eig_val_ray, xr,iter] = rayl(A, x0, nmax, tol)
................................................................
output:
eig_val_ray = 4.5000
xr = 4×1
     1
     1
     1
     1
iter = 0
0 comentarios
Respuesta aceptada
  Alan Stevens
      
      
 el 13 de Abr. de 2024
        Make sure you call the function with the arguments in the same order as those defined in the function!
A=[4 1 -1 0;1 3 -1 0;-1 -1 5 2;0 0 2 4];
tol=1.d-8;  nmax=100; x0=[1 1 1 1]';
[eig_val_ray, xr,iter] = rayl(A, x0, tol, nmax);  %%%%%%%%%%%%%%%%%%%
eig_val_ray
xr
iter
function [eigval, eigvec,itern] = rayl(A, x0, tol, nmax)%%%%%%%%%%%%%%
    x = x0;
    iter = 0;
    e0 = 0;
    while iter < nmax
        y = A * x;
        en = (x' * y) / (x' * x); 
        if abs(en - e0) <= tol
            break;
        end
        x = y / norm(y); 
        e0 = en;
        iter = iter + 1;
    end
    eigval = en;
    eigvec = x;
    itern =iter;
end
Más respuestas (0)
Ver también
Categorías
				Más información sobre Labels and Annotations en Help Center y File Exchange.
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

