Matlab - Problemas con ciclo for

 
Vista:
sin imagen de perfil

Problemas con ciclo for

Publicado por Patricio (5 intervenciones) el 16/11/2017 22:11:37
Estimados, tengo un problema al ejecutar un programa para resolver edo's mediante el método de heun, pero visto como un método de Runge-Kutta-. Adjunto el código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function [X,Y]=edoheun(f,y0,x0,xn,n)
    if nargin(f)~= 2
        disp('Error: ingrese una función anónima de dos variables');
        return;
    end
    h = (xn-x0/n);
    X = x0:h:xn;
    Y = zeros(1,n+1);
    Y(1) = y0;
    for i=1:n
        k1 = f(X(i),Y(i));
        k2 = f(X(i)+h,Y(i)+k1*h);
        Y(i+1) = Y(i)+(0.5*k1+0.5*k2)*h;
    end
end

Al momento de ejecutar cada sentencia en la ventana de comandos de Matlab estas funcionan correctamente, pero al momento de hacer correr el código como programa me arroja un error, indicando que en la línea 11 el índice excede las dimensiones de la matriz.

Saludos y desde ya agradezco alguna respuesta.
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

Problemas con ciclo for

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 17/11/2017 02:51:24
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function [X,Y]=edoheun(f,y0,x0,xn,n)
    if nargin(f)~= 2
        disp('Error: ingrese una función anónima de dos variables');
        return;
    end
    h = (xn-x0)/n;
    X = x0:h:xn;
    Y = zeros(1,n+1);
    Y(1) = y0;
    for i=1:n
        k1 = f(X(i),Y(i));
        k2 = f(X(i)+h,Y(i)+k1*h);
        Y(i+1) = Y(i)+(0.5*k1+0.5*k2)*h;
    end
end


1
2
3
4
5
>> f=@(x,y) cos(x)-x; x0=0; y0=1;xn=5; n=10;   [X,Y]=edoheun(f,y0,x0,xn,n)
X =
         0    0.5000    1.0000    1.5000    2.0000    2.5000    3.0000    3.5000    4.0000    4.5000    5.0000
Y =
    1.0000    1.3444    1.3239    0.8516   -0.1097   -1.5390   -3.3618   -5.4684   -7.7410  -10.0821  -12.4389


Saludos
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
Servicios de programación 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