Matlab - Error householder

 
Vista:

Error householder

Publicado por Aldo Iván (1 intervención) el 06/10/2014 23:35:52
Tengo el siguiente programa:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
function [x r res]=Mincua_QR(A,b)
% Resolución de Ax=b general mediante transformaciones de Householder
% Posible rango incompleto r
[m n]=size(A); x=zeros(n,1); tol=sqrt(eps); W=zeros(n,m); ip=1:n; r=n;
for j=1:n
jm=j; c=0;
for k=j:n
h=norm(A(j:m,k));
if h>c, c=h; jm=k; end
end
if jm~=j, A(:,[j jm])=A(:,[jm j]); ip([j jm]) = ip([jm j]); end
if j==m, break, end
w=Housv(A(j:m,j)); % Householder de A(j:m,j); luego a A y b
A(j:m,j:n)=A(j:m,j:n)-2*w*(w'*A(j:m,j:n)); b(j:m)=b(j:m)-2*w*(w'*b(j:m));
end
for j=1:n % Ver rango
if abs(A(j,j))<=tol, r=j-1; break, end
end
res=norm(b(r+1:m))^2; w1=zeros(r,n-r+1);
W(1:n,1:r)=A(1:r,1:n)'; % Trasp. de A = W
if r~=n
for i=r:-1:1
w1(i,1:n-r+1)=Housv([W(i,i);W(r+1:n,i)]); % Householder hacia W
W([i r+1:n],i:-1:1)=W([i r+1:n],i:-1:1)-2*w1(i,:)'*(w1(i,:)*W([i r+1:n],i:-1:1));
end
end
for i=r:-1:1 % Resol. Wx=c
x(i)=(b(i)-x(i+1:r)'*W(i+1:r,i))/W(i,i);
end
if r~=n
x(r+1:n)=0; % Aplicar a x ultimas Householder hacia W
for i=1:r, x([i r+1:n])=x([i r+1:n])-2*w1(i,:)'*(w1(i,:)*x([i r+1:n])); end
end
x(ip)=x(:); % Deshacer perm. col.

Sin embargo al probarlo me sale el siguiente error:

??? Undefined function or method 'Housv' for input arguments of type 'double'.

Error in ==> Mincua_QR at 13
w=Housv(A(j:m,j)); % Householder de A(j:m,j); luego a A y b

Alguien podría decirme por qué?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Error householder

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 07/10/2014 14:33:17
https://es.scribd.com/doc/128476843/Clase-Mincua-12
Alli esta el programa que pones, pero hay que leer todo el articulo, porque anteriormente en ese articulo se crea la función Housv()


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
>> [x r res]=Mincua_QR
 
A =
 
     1     1     1
     1     2     4
     1     3     9
     1     4    16
 
 
b =
 
     2
     3
     5
     6
 
 
x =
 
    0.5000
    1.4000
    0.0000
 
 
r =
 
     3
 
 
res =
 
    0.2000



Saludos.
JOSE JEREMÍAS CABALLERO
Asesoría online y Presencial en Matlab
programador en matlab
Servicios de programación matlab
[email protected]
Estimado Usuario de Matlab, el correo es para servicios de cursos, asesoría y programación. Toda ayuda gratuita es vía foro.


http://matlabcaballero.blogspot.com

http://www.lawebdelprogramador.com/foros/Matlab/1371532-FORMA_DE_APRENDER_MATLAB.html
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar