Matlab - Tengo este error, saben por que? Por favor

 
Vista:
sin imagen de perfil
Val: 45
Ha disminuido su posición en 4 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Tengo este error, saben por que? Por favor

Publicado por JUAN ANGEL (17 intervenciones) el 01/10/2019 20:01:08
error
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: 8.152
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Tengo este error, saben por que? Por favor

Publicado por JOSE JEREMIAS CABALLERO (5623 intervenciones) el 01/10/2019 21:05:56
podría subir el código completo.

Saludos
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
Servicios de programación matlab
Servicio de Asesoría Online en Matlab


http://matlabcaballero.blogspot.com
https://www.facebook.com/matlabcaballero
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
sin imagen de perfil
Val: 45
Ha disminuido su posición en 4 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Tengo este error, saben por que? Por favor

Publicado por JUAN ANGEL (17 intervenciones) el 01/10/2019 22:04:19
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
clear all;
clc;
 
prompt='Programa para resolver una matriz triangula inferior';
input(prompt);
a=input('Ingrese la mattriz de coeficientes   ');
b=input('Ingrese el vector de constantes   ');
x=input('Ingrese el vector inicial   ');
e=input('Ingrese el error minimo   ');
m=input('Ingrese el numero maximo de iteraciones');
 
jacob(a,b,x,e,m)
 
 
function v=jacob(a,b,x,e,m)
n=length(x);
for k=1:m
    t=x;
    for i=1:n
        s=a(i,1:i-1)*t(1,i-1)+a(i,i+1:n)*t(i+1:n);
 
        x(i)=(b(i)-s)/a(i,i);
    end
    if norm((x-t),inf)<e
        return
    end
end
v=x';
end
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
sin imagen de perfil
Val: 933
Bronce
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Tengo este error, saben por que? Por favor

Publicado por Daniel (281 intervenciones) el 01/10/2019 22:37:30
Hola,

En Matlab los elementos de la matrices tiene que se positivos y si se inicia el contador el i = 1 y se le resta 1 va a fallar el programa al acceder a(1, 0).

Saludos,
Daniel Rodríguez.
Analytics Lane
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
sin imagen de perfil
Val: 45
Ha disminuido su posición en 4 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Tengo este error, saben por que? Por favor

Publicado por JUAN ANGEL (17 intervenciones) el 01/10/2019 22:46:43
Seguro? Lo necesito para obtener las raíces con el método de Jacobi
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: 8.152
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Tengo este error, saben por que? Por favor

Publicado por JOSE JEREMIAS CABALLERO (5623 intervenciones) el 01/10/2019 23:44:46
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
function jacobiforo
% a=input('Ingrese la mattriz de coeficientes ');
a=[10 -1 2 0; -1 11 -1 3 ;2 -1 10 0 ;0 3 -1 8 ];
% b=input('Ingrese el vector de constantes ');
b=[6; 25; -11; -11];
% x=input('Ingrese el vector inicial ');
x=zeros(4,1);
%e=input('Ingrese el error minimo ');
e=10^(-2);
%m=input('Ingrese el numero maximo de iteraciones');
m=100;
 
v=jacob(a,b,x,e,m)
end
 
function v=jacob(a,b,x,e,m)
n=length(x);
for k=1:m
    t=x;
    for i=1:n
         if a(i,i)~=0
             s=0;
             for j=1:n
                 if j~=i
                     s=s+a(i,j)*t(j);
                 end
             end
            x(i)=(b(i)-s)/a(i,i);
        end
    end
   if norm((x-t),inf)<e
       v=x';
     return
   end
end
    v=x';
end

1
2
3
4
5
> jacobiforo
 
v =
 
    1.1032    2.9961   -1.0218   -2.6241
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 45
Ha disminuido su posición en 4 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Tengo este error, saben por que? Por favor

Publicado por JUAN ANGEL (17 intervenciones) el 02/10/2019 00:18:40
Mil gracias Jose
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
sin imagen de perfil
Val: 933
Bronce
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Tengo este error, saben por que? Por favor

Publicado por Daniel (281 intervenciones) el 02/10/2019 14:06:23
Como ves Jose no ha usado el valor “impresicidible” de a(1,0) que no existe.
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: 8.152
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Tengo este error, saben por que? Por favor

Publicado por JOSE JEREMIAS CABALLERO (5623 intervenciones) el 02/10/2019 14:45:15
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
clear
prompt='Programa para resolver una matriz triangula inferior';
input(prompt);
a=input('Ingrese la mattriz de coeficientes   ');
b=input('Ingrese el vector de constantes   ');
x=input('Ingrese el vector inicial   ');
e=input('Ingrese el error minimo   ');
m=input('Ingrese el numero maximo de iteraciones');
 
jacob(a,b,x,e,m)
 
 
function v=jacob(a,b,x,e,m)
n=length(x);
for k=1:m
    t=x;
    for i=1:n
        s=a(i,1:n)*t(1:n)-a(i,i)*t(i);
        x(i)=(b(i)-s)/a(i,i);
    end
    if norm((x-t),inf)<e
     break
    end
end
 v=x' ;
end


1
2
3
4
5
6
7
8
9
10
11
>> jacoforow1
Programa para resolver una matriz triangula inferior
Ingrese la mattriz de coeficientes   [10 -1 2 0; -1 11 -1 3 ;2 -1 10 0 ;0 3 -1 8 ]
Ingrese el vector de constantes   [6; 25; -11; -11]
Ingrese el vector inicial   zeros(4,1)
Ingrese el error minimo   10^(-2)
Ingrese el numero maximo de iteraciones100
 
ans =
 
    1.1032    2.9961   -1.0218   -2.6241
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: 8.152
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Tengo este error, saben por que? Por favor

Publicado por JOSE JEREMIAS CABALLERO (5623 intervenciones) el 02/10/2019 14:51:57
1
2
s=a(i,1:i-1)*t(1,i-1)+a(i,i+1:n)*t(i+1:n);  original
s=a(i,1:i-1)*t(1:i-1)+a(i,i+1:n)*t(i+1:n);  modificado

Muchos dirán, hubo un pequeño error, pero eso pequeño error te puede hacer pasar horas y horas revisando el código para poder encontrarlo o quizás no llegues encontrarlo. Pero este es lo fazcinante del mundo de la programación. Una pasión por la lógica, una diversión con el mundo de la programación, un juego con la lógica de todo los días. Un mundo lleno de concentración, de observación, de imaginación, de paciencia, de retos, esto es el mundo de la PROGRAMACION EN MATLAB.



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
clear
prompt='Programa para resolver una matriz triangula inferior';
input(prompt);
a=input('Ingrese la mattriz de coeficientes   ');
b=input('Ingrese el vector de constantes   ');
x=input('Ingrese el vector inicial   ');
e=input('Ingrese el error minimo   ');
m=input('Ingrese el numero maximo de iteraciones');
 
jacob(a,b,x,e,m)
 
 
function v=jacob(a,b,x,e,m)
n=length(x);
for k=1:m
    t=x;
    for i=1:n
        s=a(i,1:i-1)*t(1:i-1)+a(i,i+1:n)*t(i+1:n);
        x(i)=(b(i)-s)/a(i,i);
    end
    if norm((x-t),inf)<e
     break
    end
end
 v=x' ;
end


1
2
3
4
5
6
7
8
9
10
11
>> jacoforow2
Programa para resolver una matriz triangula inferior
Ingrese la mattriz de coeficientes   [10 -1 2 0; -1 11 -1 3 ;2 -1 10 0 ;0 3 -1 8 ]
Ingrese el vector de constantes   [6; 25; -11; -11]
Ingrese el vector inicial   zeros(4,1)
Ingrese el error minimo   10^(-2)
Ingrese el numero maximo de iteraciones100
 
ans =
 
    1.1032    2.9961   -1.0218   -2.6241


Saludos
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
Servicios de programación matlab
Servicio de Asesoría Online en Matlab


http://matlabcaballero.blogspot.com
https://www.facebook.com/matlabcaballero
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