Matlab - matlab-metodo de jacobi/gauss seidel

 
Vista:

matlab-metodo de jacobi/gauss seidel

Publicado por radio (9 intervenciones) el 02/01/2014 21:17:56
Tengo que solucionar el sistema de ecuaciones : KX=R con este método y el de Gauss Siedel con un error menor que 0,0001 por separado. Nos dieron los archivos del editor pero no funcionan...
Las matrices son:
K=[0.3 -0.1189 -0.0684 -0.1011 0 0;-0.189 0.4 -0.2111 -0.0059 0 0;-0.0684 -0.2111 0.7 -0.2378 -0.0059 -0.1011; -0.1011 -0.0059 -0.2378 0.74 -0.2111 -0.0684;0 0 -0.0059 -0.2111 0.43 -0.1189;0 0 -0.1011 -0.0684 -0.1189 0.34]
R=[40;0;0;50;0;35]

En archivo para el método de Jacobi dice:

function [solucion,num_iteraciones]=metodo_jacobi(A,B,punto_inicial,error)
cont_iteraciones=0;
s=size(A);
num_ecuaciones=s(1);
for k=1:num_ecuaciones
B(k)=B(k)/A(k,k);
A(k,:)=A(k,:)/A(k,k);
A(k,k)=0;
end
M=-A;
x_ant=punto_inicial';
x_sig=M*x_ant+B';
deltax_n=x_sig-x_ant;
while norm(deltax_n,inf) > error
x_sig=M*x_ant+B';
deltax_n=x_sig-x_ant;
x_ant=x_sig;
cont_iteraciones=cont_iteraciones+1;
end
solucion=x_sig;
num_iteraciones=cont_iteraciones;



El archivo para el método de Gauss Seidel dice:

function [sol,niteraciones,error]=metodo_gauss_seidel(A,B,x0,cotaerror)
D=diag(diag(A));
U=triu(A)-D;
L=tril(A)-D;
M=-inv(D+L)*U;
N=inv(D+L)*B;
cont=1;
xant=x0;
xsig=M*xant+N;
while norm(xsig-xant,inf)>cotaerror
cont=cont+1;
xant=xsig;
xsig=M*xant+N;
end
sol=xsig;
niteraciones=cont;
error=norm(xsig-xant,inf);

Si lo hago por Gauss me da la siguiente matriz de resultados:
1.0000 0 0 0 0 0 543.5471
0 1.0000 0 0 0 0 469.7630
0 0 1.0000 0 0 0 392.3194
0 0 0 1.0000 0 0 399.3537
0 0 0 0 1.0000 0 314.8165
0 0 0 0 0 1.0000 410.0322
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

matlab-metodo de jacobi/gauss seidel

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 02/01/2014 22:01:44
Como lo ejecutas?. Los códigos son correcto.



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
35
>> [solucion,num_iteraciones]=metodo_jacobi
 
A =
 
    0.3000   -0.1189   -0.0684   -0.1011         0         0
   -0.1890    0.4000   -0.2111   -0.0059         0         0
   -0.0684   -0.2111    0.7000   -0.2378   -0.0059   -0.1011
   -0.1011   -0.0059   -0.2378    0.7400   -0.2111   -0.0684
         0         0   -0.0059   -0.2111    0.4300   -0.1189
         0         0   -0.1011   -0.0684   -0.1189    0.3400
 
 
B =
 
    40     0     0    50     0    35
 
 
error =
 
     0
 
 
solucion =
 
  543.5471
  469.7630
  392.3194
  399.3537
  314.8165
  410.0322
 
 
num_iteraciones =
 
   311




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
35
36
37
38
39
40
>> [sol,niteraciones,error]=metodo_gauss_seidel
 
A =
 
    0.3000   -0.1189   -0.0684   -0.1011         0         0
   -0.1890    0.4000   -0.2111   -0.0059         0         0
   -0.0684   -0.2111    0.7000   -0.2378   -0.0059   -0.1011
   -0.1011   -0.0059   -0.2378    0.7400   -0.2111   -0.0684
         0         0   -0.0059   -0.2111    0.4300   -0.1189
         0         0   -0.1011   -0.0684   -0.1189    0.3400
 
 
B =
 
    40
     0
     0
    50
     0
    35
 
 
sol =
 
  543.5468
  469.7627
  392.3191
  399.3535
  314.8163
  410.0321
 
 
niteraciones =
 
    62
 
 
error =
 
  8.8000e-005







Saludos.
JOSE JEREMÍAS CABALLERO
Asesorías en Matlab
programador en matlab
Servicios de programación matlab
[email protected]


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

matlab-metodo de jacobi/gauss seidel

Publicado por radio (9 intervenciones) el 02/01/2014 23:00:27
si, cómo lo ejecuto entonces...
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

matlab-metodo de jacobi/gauss seidel

Publicado por radio (9 intervenciones) el 03/01/2014 13:46:24
Es decir, el problema esta entonces en la ejecución. No me sale...
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

matlab-metodo de jacobi/gauss seidel

Publicado por radio (9 intervenciones) el 03/01/2014 14:05:05
ah, perdón. Lo que ingreso en el Matlab es lo siguiente:
>> A=[0.3 -0.1189 -0.0684 -0.1011 0 0; -0.1189 0.4 -0.2111 -0.0059 0 0; -0.0684 -0.2111 0.7 -0.2378 -0.059 -0.1011; -0.1011 -0.0059 -0.2378 0.74 -0.2111 -0.0684; 0 0 -0.0059 -0.211 0.43 -0.1189; 0 0 -0.1011 -0.0684 -0.1189 0.34];
>> B=[40 0 0 50 0 35]';
>>[solucion,num_iteraciones]=metodo_jacobi(A,B,[0 0 0 0 0 0],0.0001)

y me salta este error:

Undefined function 'metodo_jacobi' for input arguments of type 'double'.
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
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

matlab-metodo de jacobi/gauss seidel

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 03/01/2014 14:09:05
escribe dir('m*.m') en la ventana de comandos de matlab luego haz enter y copia lo que al foro.
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

matlab-metodo de jacobi/gauss seidel

Publicado por radio (9 intervenciones) el 03/01/2014 14:22:24
>> dir('m*.m')
m*.m not found.
>> A=[0.3 -0.1189 -0.0684 -0.1011 0 0; -0.1189 0.4 -0.2111 -0.0059 0 0; -0.0684 -0.2111 0.7 -0.2378 -0.059 -0.1011; -0.1011 -0.0059 -0.2378 0.74 -0.2111 -0.0684; 0 0 -0.0059 -0.211 0.43 -0.1189; 0 0 -0.1011 -0.0684 -0.1189 0.34];
>> B=[40 0 0 50 0 35]';
>>[solucion,num_iteraciones]=metodo_jacobi(A,B,[0 0 0 0 0 0],0.0001)
>> B=[40 0 0 50 0 35]';
|
Error: Unexpected MATLAB operator.
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
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

matlab-metodo de jacobi/gauss seidel

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 03/01/2014 14:26:07
El código que quieres ejecutar no esta en la dirección actual de matlab, por eso hay error.
Sugerencia estudiar: Matlab básico, vectores, matrices, grafica en dos dimensiones, grafica en tres dimensiones, creación de archivos en matlab tanto modelo script y modelo function.

Si eres un alumno de métodos numéricos o análisis numérico, de repente no te hayan enseñando matlab en ese curso, pues es obligatorio que te enseñan matlab en ese curso. Ahora si nunca haz llevado esos cursos entonces mi recomendación es que estudies algo de lenguaje de programación y de esa manera podrás entender matlab. Y lleves cursos de matlab en la zona de vives, o descargue tutoriales de matlab básico y estúdialo por tu cuenta.

El programa que quieres ejecutar es para un usuario que está en nivel intermedio en matlab. Y por esa razón es que tienes dificultades para poder ejecutarlo.


digita: pwd.
Ejemplo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
>> pwd
 
ans =
 
C:\Users\jeremias\Downloads
 
>> dir('m*.m')
 
MultivarDos.m                      matriz_grafica1.m                  metodo_jacobi.m                    mostrar_imagen_poco_a_poco.m
maincaballero.m                    matriz_simbolica1.m                mifuncion.m                        mostrar_imagen_poco_a_poco1.m
marlene1.m                         maximos_por_columnas.m             minimizante.m                      mostrar_imagen_poco_a_poco2.m
masa_resorte.m                     mayorfacebook.m                    minimo_comun_multiplo.m            muestra_imagen_del_mismo_tamano.m
matlab_arcgis.m                    media_matriz1.m                    miprimerguide.m                    mullercaballero.m
matriz1.m                          menuss10.m                         miriam15.m                         multiple_for.m
matriz_1_hasta10.m                 mesesmiriam.m                      moda1.m                            musica_notas1.m
matriz_binaria.m                   metodo_gauss_seidel.m              monedas.m
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

matlab-metodo de jacobi/gauss seidel

Publicado por radio (9 intervenciones) el 03/01/2014 15:12:05
Ahora el error es el siguiente
>> A=[0.3 -0.1189 -0.0684 -0.1011 0 0; -0.1189 0.4 -0.2111 -0.0059 0 0; -0.0684 -0.2111 0.7 -0.2378 -0.059 -0.1011; -0.1011 -0.0059 -0.2378 0.74 -0.2111 -0.0684; 0 0 -0.0059 -0.211 0.43 -0.1189; 0 0 -0.1011 -0.0684 -0.1189 0.34];
B=[40 0 0 50 0 35]';
[solucion,num_iteraciones]=mjacobi(A,B,[0 0 0 0 0 0],0.0001)
Error using *
Inner matrix dimensions must agree.

Error in mjacobi (line 9)
xsig=M*xant+N;
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

matlab-metodo de jacobi/gauss seidel

Publicado por MAURICIO VALDES (1 intervención) el 14/03/2014 17:19:18
Hola, probé tu código,

sácale los ' a las B dentro del código, ya que no hay que usar la traspuesta.

Quedaría:

function [solucion,num_iteraciones]=metodo_jacobi(A,B,punto_inicial,error)
cont_iteraciones=0;
s=size(A);
num_ecuaciones=s(1);
for k=1:num_ecuaciones
B(k)=B(k)/A(k,k);
A(k,:)=A(k,:)/A(k,k);
A(k,k)=0;
end
M=-A;
x_ant=punto_inicial';
x_sig=M*x_ant+B;
deltax_n=x_sig-x_ant;
while norm(deltax_n,inf) > error
x_sig=M*x_ant+B;
deltax_n=x_sig-x_ant;
x_ant=x_sig;
cont_iteraciones=cont_iteraciones+1;
end
solucion=x_sig;
num_iteraciones=cont_iteraciones;
end

Saludos
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

matlab-metodo de jacobi/gauss seidel

Publicado por liliana (1 intervención) el 17/12/2014 13:58:17
hola, estuve verificando su código pero, lo introduzco en matlab y si correo y ni llama la funcion
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