Matlab - Metodo iterativo de Jacobi

   
Vista:

Metodo iterativo de Jacobi

Publicado por Tannia (1 intervención) el 08/01/2015 01:23:53
Por favor necesito ayuda .... Con este 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
% Metodo Iterativo de Jacobi)
function X=jacobi(A,B,P,delta, max1)
% Datos
% - A es una amtriz invertible de orden N x N
% - B es una matriz de orden N x 1
% - P es una matriz de orden N x 1: el punto inicial
% - delta es la tolerancia para P
% - max1 es el número máximo de iteraciones
% Resultados
% - X es una matriz de orden N x 1:
% la aproximación a la solución de AX=B
% generada por el método iterativo de Jacobi
N = length(B);
  X = 0;
for k=1: max1
    for j=1:N
        X(j)=(B(j)-A(j,[1:j-1,j+1:N])*P([1:j-1,j+1:N]))/A(j,j);
    end
    X = zeros(1, 100);
    err=abs(norm(X'-P));
    relerr=err/(norm(X)+eps);
    P=X';
    if(err<delta)||(relerr<delta)
        break
    end
end
X=X';

al hacerle funcionar me sale ese error:

1
2
3
4
5
??? Error using ==> mtimes
Inner matrix dimensions must agree.
 
Error in ==> jacobi at 16
        X(j)=(B(j)-A(j,[1:j-1,j+1:N])*P([1:j-1,j+1:N]))/A(j,j);
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

Metodo iterativo de Jacobi

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3433 intervenciones) el 11/01/2015 13:18:09
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
% Metodo Iterativo de Jacobi)
function X=jacobi(A,B,P,delta, max1)
% Datos
% - A es una amtriz invertible de orden N x N
% - B es una matriz de orden N x 1
% - P es una matriz de orden N x 1: el punto inicial
% - delta es la tolerancia para P
% - max1 es el número máximo de iteraciones
% Resultados
% - X es una matriz de orden N x 1:
% la aproximación a la solución de AX=B
% generada por el método iterativo de Jacobi
N = length(B);
  X = 0;
for k=1: max1
    for j=1:N
        X(j)=(B(j)-A(j,[1:j-1,j+1:N])*P([1:j-1,j+1:N]))/A(j,j);
    end
 
    err=abs(norm(X'-P));
    relerr=err/(norm(X)+eps);
    P=X';
    if(err<delta)||(relerr<delta)
        break
    end
end


Forma de Ejecutar
1
2
3
4
5
6
7
8
9
10
>> A=rand(4); B=rand(4,1); P=zeros(4,1); delta=0.0001; max1=100;X=jacobi_vectorizada(A,B,P,delta, max1)
 
X =
 
  1.0e+058 *
 
   -0.3254
   -0.2953
   -0.1737
   -1.2749


Revisar el código, al parecer el resultado que muestra no es el correcto.

Saludos.
JOSE JEREMÍAS CABALLERO
Asesoría online en Matlab
programador en matlab
Servicios de programación matlab
jjcc94@hotmail.com
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