Matlab - Para resolver ecuaciones diferenciales

 
Vista:

Para resolver ecuaciones diferenciales

Publicado por Adrián Alfonso (11 intervenciones) el 09/03/2012 20:28:00
Hola a tod@s!!

A ver, estoy intentando resolver un problema numérico en el que se tiene que resolver una ecuación diferencial de 2º orden, cuya variable independiente es el tiempo.
La cuestión es que tengo que resolver muchas de esas ecuaciones seguidas para encontrar la solución en una región del espacio. Es decir, que los coeficientes de la ecuación son distintos para cada caso.
Por ejemplo, si yo quiero obtener la solución del siguiente sistema (mediante un bucle for-end):

Para n variando de 1 a 1000 -> La ecuación a resolver es y''+y'+n=0 , y'(0)=0, y(0)=n+3

Quiero conocer y1(t), y2(t).... y1000(t) SIN que me salga la n en las expresiones sino sólo en función de t, cómo puedo hacerlo? Porque he probado el DSOLVE, pero me lo llena de n. A no ser que pueda conocer de alguna forma el valor numérico de y (guardado por 2 +6*n como solución del DSOLVE) para distintos valores de n.

Espero me puedan ayudar. Muchas gracias.
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

Para resolver ecuaciones diferenciales

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 09/03/2012 22:33:01
Adrian Alonso.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
clear all
n_maximo=10;
for n=1:n_maximo
Y(n,:)=dsolve(['D2y = -Dy-',num2str(n)], ['y(0) = 0, Dy(0) =',num2str(n),'+3']);
end
i=1;
syms t
while i<=n_maximo
    v=genvarname(['y',num2str(i)]) ;
    eval([v, ['=',char(Y(i,:))]]);
    i=i+1;
end
 
for i=1:n_maximo
    fprintf('y%i(t)=%s\n',i,char(Y(i,:)))
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
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
EJECUCON
>> edo4
 
y1 =
 
5 - 5/exp(t) - t
 
 
y2 =
 
7 - 7/exp(t) - 2*t
 
 
y3 =
 
9 - 9/exp(t) - 3*t
 
 
y4 =
 
11 - 11/exp(t) - 4*t
 
 
y5 =
 
13 - 13/exp(t) - 5*t
 
 
y6 =
 
15 - 15/exp(t) - 6*t
 
 
y7 =
 
17 - 17/exp(t) - 7*t
 
 
y8 =
 
19 - 19/exp(t) - 8*t
 
 
y9 =
 
21 - 21/exp(t) - 9*t
 
 
y10 =
 
23 - 23/exp(t) - 10*t
 
y1(t)=5 - 5/exp(t) - t
y2(t)=7 - 7/exp(t) - 2*t
y3(t)=9 - 9/exp(t) - 3*t
y4(t)=11 - 11/exp(t) - 4*t
y5(t)=13 - 13/exp(t) - 5*t
y6(t)=15 - 15/exp(t) - 6*t
y7(t)=17 - 17/exp(t) - 7*t
y8(t)=19 - 19/exp(t) - 8*t
y9(t)=21 - 21/exp(t) - 9*t
y10(t)=23 - 23/exp(t) - 10*t



Saludos.
JOSE JEREMIAS CABALLERO
Servicios de programacion matlab
Asesor de Proyectos con Matlab
programador en matlab
[email protected]


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

Para resolver ecuaciones diferenciales

Publicado por Adrián Alfonso (11 intervenciones) el 05/04/2012 22:07:55
Gracias por tu ayuda. Me sirvió y más o menos conseguí lo que buscaba :).
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