Matlab - Ayuda parse error

 
Vista:

Ayuda parse error

Publicado por Guillermo (1 intervención) el 24/10/2016 13:41:52
Hola mi problema surge al llamar a la siguiente funcion en la ventana de comandos

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
function x = GaussSeidel(A,b,x0,nmax)
    n = length(b);
    r = b'-A*x0';
    cont = 0;
    while norm(r) >= 10^(-6)
        x = zeros(1,n);
        for i = 1:n
          suma1 = 0;
          suma2 = 0;
          for j = 1:n
            if i < j
                suma1 = suma1 + A(i,j)*x(j);
            if j > i
                suma2 = suma2 + A(i,j)*x0(j);
            if i == j
                suma1 = suma1 + 0;
                suma2 = suma2 + 0;
            end
          end
          x(i) = (b(i)-suma1-suma2)/(A(i,i));
        end
        x0 = x;
        r = b'-A*x0';
        cont = cont + 1;
        if cont == nmax
            disp("La iteracion diverge");
        end
    end
end

y me da
parse error near line 30 of file C:\Users\admin1\Downloads\GaussSeidel.m

syntax error
no se cual es mi error alguien me podria ayudar?
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

Ayuda parse error

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 27/10/2016 01:16:42
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
function x = GaussSeidel(A,b,x0,nmax)
if nargin <1
    A=[4 1 -1; 2 7 1; 1 -3 12];
    b=[3 19 31];
    x0=[0 0 0];
    nmax=100000;
end
    n = length(b);
    r = b'-A*x0';
    cont = 0;
     x = zeros(1,n);
    while norm(r) >= 10^(-6)
        for i = 1:n
          suma1 = 0;
          suma2 = 0;
            for j=1:i-1
                suma1 = suma1 + A(i,j)*x(j);
            end
 
            for j=i+1:n
                suma2 = suma2 + A(i,j)*x0(j);
            end
 
          x(i) = (b(i)-suma1-suma2)/(A(i,i));
 
           end
        x0 = x;
        r = b'-A*x0';
        cont = cont + 1;
        if cont == nmax
            disp('La iteracion diverge');
            break
        end
    end
end



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
>> A=[4 1 -1; 2 7 1; 1 -3 12], b=[3 19 31],x0=[0 0 0],nmax=100000,  x = GaussSeidel(A,b,x0,nmax)
 
A =
 
     4     1    -1
     2     7     1
     1    -3    12
 
 
b =
 
     3    19    31
 
 
x0 =
 
     0     0     0
 
 
nmax =
 
      100000
 
 
x =
 
    1.0000    2.0000    3.0000


Saludos.
JOSE JEREMÍAS CABALLERO
Asesoría online en Matlab
Servicios de programación matlab
[email protected]
El correo es para servicios de programación, toda ayuda gratuita es vía foro.


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