Matlab - Problemas para ejecutar un runge kutta

 
Vista:

Problemas para ejecutar un runge kutta

Publicado por Ray (1 intervención) el 05/06/2017 15:29:31
Buenos días, estoy haciendo un código para programar un método de Runge Kutta, pero me marca un error: 'In an assignment A(I) = B, the number of elements in B and I must be the same.'

mi código es el siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
clc;
clear all;
N=10; a=0; b=2.5; Yini=3;
F='-1.2*Y + 7*exp(-0.3*X)';
Yp='70/9*exp(-0.3*Xpart)- 43/9*exp(-1.2*Xpart)';
FXY=inline(F);
Ypart=inline(Yp);
X(1)=a; Y(1)=Yini;
h=(b-a)/N;
for i=1:N
    k1(i+1) = FXY(X(i),Y(i));
    k2(i+1) = FXY(X(i)+0.5*h,Y(i)+ 0.5*h*k1);
    k3(i+1) = FXY((X(i)+0.5*h),(Y(i)+ 0.5*h*k2));
    k4(i+1) = FXY((X(i)+h),(Y(i)+ k3*h));
 
    Y(i+1) = Y(i) + (1/6)*(k1(i)+2*k2(i)+2*k3(i)+k4(i))*h;
end
Xpart= a:h:b;
Yparti= Ypart(Xpart);
plot(X,Y,'--r', Xpart, Yparti)


alguién puede encontrar el problema
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 JESUS DAVID ARIZA ROYETH
Val: 3.309
Plata
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Problemas para ejecutar un runge kutta

Publicado por JESUS DAVID ARIZA ROYETH (1818 intervenciones) el 05/06/2017 19:48:24
1
k2(i+1) = FXY(X(i)+0.5*h,Y(i)+ 0.5*h*k1);

esto y las líneas que vienen tienen sus problemas ya que estás llamando k1 como si fuera una constante pero al hacer k1(i+1) estás definidiendo k1 como un vector Y OTRA COSA FXY(X(i),Y(i)); estás tratando X como un vector cuando aquí lo defines solo como a : X(1)=a


saludos
https://www.facebook.com/royethmatlab/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-1
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

Problemas para ejecutar un runge kutta

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 06/06/2017 19:11:01
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
clear all;
close all
N=100; a=0; b=2.5; Yini=3;
F='-1.2*Y + 7*exp(-0.3*X)';
Yp='70/9*exp(-0.3*Xpart)- 43/9*exp(-1.2*Xpart)';
FXY=inline(F);
Ypart=inline(Yp);
X(1)=a; Y(1)=Yini;
h=(b-a)/N;
i=1;
for i=1:N
    k1(i+1) =h* FXY(X(i),Y(i));
    k2(i+1) = h*FXY(X(i)+0.5*h,Y(i)+ 0.5*h*k1(i+1));
    k3(i+1) = h*FXY(X(i)+0.5*h,Y(i)+ 0.5*h*k2(i+1));
    k4(i+1) = h*FXY(X(i)+h,Y(i)+ k3(i+1)*h);
    Y(i+1) = Y(i) + 1/6*(k1(i+1)+2*k2(i+1)+2*k3(i+1)+k4(i+1));
    X(i+1)=X(i)+h;
end
Xpart= a:h:b;
Yparti= Ypart(Xpart);
plot(X,Y,'--r',Xpart, Yparti )
grid on

Saludos
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
Servicios de programación matlab


http://matlabcaballero.blogspot.com
https://www.facebook.com/matlabcaballero/


runge_kutta1
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