Matlab - SUSTITUCIONES REGRESIVAS MATLAB

 
Vista:
sin imagen de perfil

SUSTITUCIONES REGRESIVAS MATLAB

Publicado por jaime (4 intervenciones) el 03/12/2014 00:22:37
Hola. El siguiente código para resolver un sistema triangular superior por sustituciones regresivas me da resutados erróneos en matlab. Si alguien viese algún error en el código se lo agradecería.
Adjunto el código:

1
2
3
4
5
6
7
8
9
10
11
12
13
function [x]=regresivas(A,b)
[f,c]=size(A);
if f~=c
    error('la matriz de coeficientes no es cuadrada')
end
x=zeros(f,1);
for i=f-1:-1:1
    x(i)=b(i);
    for j=i+1:f
        x(i)=x(i)+A(i,j)*x(j);
    end
    x(i)=x(i)/A(i,i);
end



Gracias y un saludo.
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

SUSTITUCIONES REGRESIVAS MATLAB

Publicado por Jordi (1 intervención) el 03/12/2015 13:09:30
No es un más, en teoría debería ser
1
2
3
4
5
6
7
8
9
10
11
12
13
function [x]=regresivas(A,b)
[f,c]=size(A);
if f~=c
    error('la matriz de coeficientes no es cuadrada')
end
x=zeros(f,1);
for i=f-1:-1:1
    x(i)=b(i);
    for j=i+1:f
        x(i)=x(i)-A(i,j)*x(j); %es aquí donde me refiero que deberías tener un menos, y no un más.
    end
    x(i)=x(i)/A(i,i);
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

SUSTITUCIONES REGRESIVAS MATLAB

Publicado por Student11 (1 intervención) el 10/12/2016 20:45:28
En el primer bucle for seria:
for i=f:-1:1
x(i)=b(i)
....
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

SUSTITUCIONES REGRESIVAS MATLAB

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 09/01/2017 13:23:22
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function x=regresivas_Ax_b(A,b)
if nargin==0
    A=[1 4 5; 0 3 2; 0 0 3]
    b=[1; 2; 6]
end
[f,c]=size(A);
if f~=c
    error('la matriz de coeficientes no es cuadrada')
end
x=zeros(f,1);
for i=f:-1:1
    x(i)=b(i);
    for j=i+1:f
        x(i)=x(i)-A(i,j)*x(j);
    end
    x(i)=x(i)/A(i,i);
end

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
>> A=[1 4 5; 0 3 2; 0 0 3],b=[1; 2; 6],x=regresivas_Ax_b(A,b)
 
A =
 
     1     4     5
     0     3     2
     0     0     3
 
 
b =
 
     1
     2
     6
 
 
x =
 
   -6.3333
   -0.6667
    2.0000

Saludos.
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
programador en matlab
Servicios de programación matlab
[email protected]


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