Matlab - SUSTITUCIONES REGRESIVAS MATLAB

   
Vista:

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

SUSTITUCIONES REGRESIVAS MATLAB

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3559 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
jjcc94@hotmail.com


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