Sunteți pe pagina 1din 4

Facultad de Matemáticas

Álgebra Lineal Numérica

Laboratorio 4

Catedratico:
Dr. Freddy Vides

Alumno:
Wilfredo Ebanks

Cuenta:
20142002814

Julio 2020
Practica
Ejercicio 3: Escribir un programa Octave que implemente al algoritmo prototípico del método
potencia para calcular un eigenpar dominante (a, x) de una matriz A que cumple con las
condiciones de convergencia del método de potencia, y que además permite detener el cómputo
de elementos de la sucesión {xk }k≥0 determinada por el método iterativo, una vez que se alcanza
un error absoluto k Axk − ak xk k2 ≤ ε, donde ε > 0 es un valor de tolerancia determinado por
el usuario del programa.
function [l,v,N]=Power(A,N,tol)
tic();
n=size(A,1);
v=randn(n,1);
v=v/norm(v);
for k=1:N
N=k;
y=A*v;
l=(v’*y);
if norm(y-l*v)<=tol, break;end
v=y/norm(y);
end
t = toc()
end
Ventana de Salida
>> A = [4 1 2;1 6 3;-1 2 6];
>> max(eig(A))
ans = 8.3842
>> [l,v,N]=Power(A,50,0.00000001)
t = 0.077212
l = 8.3842
v =

-0.39888
-0.77803
-0.48536

N = 29
Ejercicio 4: Escribir un programa Octave que genere una matriz A ∈ R3000x3000 tal que el
método de potencia aplicado a A aproxima un eigenpar dominante (λ1 , x1 ) de A para una to-
leracia ≤ 1x10−10 (de preferencia en un número de iteraciones N << 3000, es decir, el valor de
N es considerablemente menor que 3000).

Ventana de Salida
>> C=spdiags(ones(1500,1)*[1 0],-1:0,1500,1500);
>> C(1,1500)=1;
>> W=orth(randn(2));
>> W=kron(C,W);
>> T=W*spdiags([100;.1*randn(2999,1)],0,3000,3000)*W’;

1
Ejercicio 7: Escribir un programa Octave que modificando al algoritmo prototípico del método
potencia con base en la observación 2.20, para calcular un eigenpar (λn , xn ) de una matriz A
que cumple con las condiciones de convergencia del método de potencia y con la suposición
2.18, y que además permite detener el cómputo de elementos de la sucesión xkk≥0 determinada
por el método iterativo, una vez que se alcanza un error absoluto k A−1 xk − a−1 k xk k2 ≤ ε,
donde ε > 0 es un valor de tolerancia determinado por el usuario del programa.
function [l,x,Num,t] = Power_inv(A,Num,tol)
tic();
n= size(A ,1) ;
y= ones(n ,1) ;
for k = 1:Num
Num = k;
v = y/ norm (y ,2) ;
y = A\v;
h = v’*y;
x = y/h;
l = (x’*y) ;
l = 1/l;
if norm (y-h .*v ,2) < tol
break ;
end
end
t= toc() ;
end
Ventana de Salida
>> A = [3 2 .5;1 3 0;0 -1 3];
>> min(eig(A))
ans = 1.4743
>> [l,x,Num,t] = Power_inv (A,50,1e-8)
l = 1.4743
x =

-0.78709
0.51589
0.33814

Num = 25
t = 0.17725
Ejercicio 8: Escribir un programa Octave que genere una matriz A ∈ R3000x3000 tal que el
método de potencia aplicado a A−1 converge a un eigenpar dominante (λ−1 n , xn ) de A (de
preferencia en un número de iteraciones N << 3000, es decir, el valor de N es considerablemente
menor que 3000).
>> A = [3 2 .5;1 3 0;0 -1 3];
>> max(eig(A))
ans = 4.2670
>> [l,x,Num,t] = Power_inv (A,50,1e-8)
l = 1.4743
x =

2
-0.78709
0.51589
0.33814

Num = 25
t = 0.0042560

S-ar putea să vă placă și