Octave - Ayuda con Metodo Jacobi Octave

 
Vista:
Imágen de perfil de Geraldine
Val: 1
Ha mantenido su posición en Octave (en relación al último mes)
Gráfica de Octave

Ayuda con Metodo Jacobi Octave

Publicado por Geraldine (1 intervención) el 26/09/2019 17:43:25
Buenas tardes, Tengo un problema con 2 codigos que no se quieren ejecutar en octave:

https://docs.google.com/viewer?a=v&pid=sites&srcid=ZGVmYXVsdGRvbWFpbnxwbjIwMTExfGd4OmE3NjhmZDc0Y2VmOGIyOQ

https://docs.google.com/viewer?a=v&pid=sites&srcid=ZGVmYXVsdGRvbWFpbnxwbjIwMTExfGd4OmU5OWU3ZGQ0OGQ3MDEyYQ

Por algun motivo me da el siguiente error:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
METODO DE JACOBI
 
Ingrese la matriz de coeficiente a:12
Ingrese la matriz de coeficiente b:2
Ingrese el vector con las aproximacimaciones Iniciales:15
Ingrese el número máximo de iteraciones:3
Ingrese la tolerancia:2
condicional=
 1
La matriz de transicion de jacobi:
0
El vector constante es:   1.666666666666667e-01
error: x(2): out of bound 1
error: called from
    metodo_jacobi at line 47 column 2
>>



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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
clear all
clc
format long
 
fprintf('METODO DE JACOBI\n\n');
 
%Ingresamos las variables a calcular:
a=input('Ingrese la matriz de coeficiente a:');
b=input('Ingrese la matriz de coeficiente b:');
x=input('Ingrese el vector con las aproximacimaciones Iniciales:');
iter=input('Ingrese el número máximo de iteraciones:');
total=input('Ingrese la tolerancia:');
 
%Se calcula el condicional de la matriz de coeficientes
cond=norm(a)*norm(a^-1);
disp('condicional=');
disp(cond);
 
%Se calcula el determinante de la matriz de coeficientes
determinante=det(a);
if determinante==0;
disp('El determinante es cero, el problema no tiene solución única')
return
end
 
n=length(b);%numero de elementos del vector b
d=diag(diag(a)); %obtencion de la matriz diagonal
l=d-tril(a); %obtencion de la matriz diagonal superior L
u=d-triu(a);%obtencion de la matriz diagonal inferior u
 
fprintf('La matriz de transicion de jacobi:\n');
T=d^-1*(l+u); % matriz de transicion de jacobi
disp(T);
re=max(abs(eig(T))); %calculo del radio espectral
 
if re>1
disp('Radio Espectral mayor que 1');
disp('el método no converge');
return
end
 
fprintf('El vector constante es:');
C=d^-1*b; %vector constante C, para el metodo
disp(C);
i=0;
err=total+1;
z=[i,x(1),x(2),x(3),err]; %vector que me permite graficar la tabla
 
while err>total & i<iter
xi=T*x+C;
%disp(xi)
 
err=norm(xi-x); %norma 2
%err=max(abs(xi-x)); %norma 1
%err=norm(xi-x)/norm(xi); %norma relativa
x=xi;
i=i+1;
z(i,1)=i;
z(i,2)=x(1);
z(i,3)=x(2);
z(i,4)=x(3);
z(i,5)=err;
end
 
fprintf('TABLA:\n\n n x1 x2 x3 Error\n\n ');
disp(z)%impresión de la tabla.

SI pueden ayudarme a conseguir el error seria maravilloso.
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