Matlab - Resolucion ecuacion no linear

 
Vista:

Resolucion ecuacion no linear

Publicado por Daniel (5 intervenciones) el 13/01/2009 13:50:54
Hola.

Necesito resolver una ecuacion no linear y no tengo ni idea de por donde cogerla. He de hacerlo con matlab, pero no soy muy ducho, así que si alguien me pudiese decir los pasos (funcion a crear y tal)...

La función y(t) >= 0 es:
(t^2+y^2)/2 - t^2*y + t*exp(y) = 4.5

para t = 0:0.5:4;

Espero que alguien pueda ayudarme,

gracias por adelantado!
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

RE:Resolucion ecuacion no linear

Publicado por ramiro (1 intervención) el 13/01/2009 20:16:42
Hola:
He quí lo que he podido hacer hasta ahorita:
1) Crear un archivo nuevo en file->new->m file
function d=danik(t)
syms y
f=(t^2+y^2)/2-(t^2)*y+t*exp(y)-4.5
d=solve(f);
2) Guarda el archivo como danik, (la terminación .m es automática)
3) Crea un nuevo archivo siguiendo nuevamente la secuencia file->new->m file
t=0:.5:4
for i=1:length(t)
danik(t(i))
end
Guárdalo con el nombre que quieras, yo por ejemplo le llamé "latarea"
Ahora, Lo puedes ejecutar con ese nombre desde la ventana de comandos de matlab.
>>latarea
obtendrás como respuesta las funciones respectivas para los diferentes valores propuestos así como sus soluciones, la discriminación de los valores negativos no he hallado como hacerla de manera automática, lo único que se puede hacer, hasta ahorita, es quedarte con las respuestas positivas obtenidas del listado de respuestas.
Espero que te sirva.
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

RE:Resolucion ecuacion no linear

Publicado por ramiro (54 intervenciones) el 13/01/2009 20:20:12
Hola:
He aquí lo que he podido hacer hasta este momento:
1) Crear un archivo nuevo en file->new->m file
function d=danik(t)
syms y
f=(t^2+y^2)/2-(t^2)*y+t*exp(y)-4.5
d=solve(f);
2) Guarda el archivo como danik, (la terminación .m es automática)
3) Crea un nuevo archivo siguiendo nuevamente la secuencia file->new->m file
t=0:.5:4
for i=1:length(t)
danik(t(i))
end
Guárdalo con el nombre que quieras, yo por ejemplo le llamé "latarea"
Ahora, Lo puedes ejecutar con ese nombre desde la ventana de comandos de matlab.
>>latarea
obtendrás como respuesta las funciones respectivas para los diferentes valores propuestos así como sus soluciones, la discriminación de los valores negativos no he hallado como hacerla de manera automática, lo único que se puede hacer, hasta ahorita, es quedarte con las respuestas positivas obtenidas del listado de respuestas.
Espero que te sirva.
Nota: te reenvié el mensaje, porque no sé si te va a llegar del otro modo ya que la dirección de correo estaba equivocada.
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

RE:Resolucion ecuacion no linear

Publicado por Daniel (5 intervenciones) el 13/01/2009 21:49:51
Muchas gracias Ramiro :)

Esto me ha servido y he podido seguir avanzando para poder hacer bastantes cosas más, pero me he encontrado con otro pequeño problema que me han planteado. Te comento a ver si puedes ayudarme ^_^

Tengo que plantear la ecuación diferencial que satisface esa función y, y usar ode45 para resolverla en los puntos de malla 0:0.05:4;
Con esto, calcular la longitud l usando la formula de Simpson compuesta, siendo l = integral(1+Dy(t)^2)) entre 0 y 4

Sé que esa integral se calcula con el método de Simpson compuesto:
siendo y_ds las derivadas
arco = sqrt(1+y_ds.^2);
l=(4*sum(arco(2:2:end-1)) + 2*sum(arco(3:2:end-2)) + arco(1) + arco(end)) * h/3;

y la he calculado con los resultados ofrecidos con una spline propia, pero no se muy bien como hacer el tema de plantear las ecuaciones y resolverla con ode45, obteniendo las derivadas para el método de Simpson.

Si me pudieses ayudar de nuevo te estaré etérnamente agradecido :)

un saludo!
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

RE:Resolucion ecuacion no linear

Publicado por ramiro (54 intervenciones) el 14/01/2009 01:04:44
La ecuación diferencial de primer orden, se obtiene con la fórmula de Newton
y'=-Fy/Ft, donde Fy y Ft son las derivadas parciales con respecto a "y " y "t " de la función definida por F=(t^2+y^2)/2-t^2*y+t*e^y-4.5.
En resumen la ecuación quedaría en la forma:
y'=-(y-t^2+t*e^y)/(t-2*t*y+e^y), la cual debes definir en un archivo nuevo en el editor de texto de matlab que se activa siguiendo la ya conocida secuencia
file->new->mfile
function yp=F(t,y)
yp=-(y-t.^2+t.*exp(y))./(t-2*t.*y+exp(y));
El nombre de este archivo debe ser F
Nota los puntos en las variables t.^2, t.*exp(y) 2*t.*y y antes del signo de división ./ , como debe ser siempre que escribes expresiones numéricas en matlab.
Después llama el comando ode45 en le ventana de comandos de matlab para resolverla en la malla deseada.
[t,y]=ode45('F',[0:.5:4],[3 0])
Par terminar puedes teclear
plot(t,y(:,1)) para l agráfica de t vs y o simplemente plot(t,y) para ver todas las gráficas respectivas.
Espero haber sido claro.
Saludos
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

RE:Resolucion ecuacion no linear

Publicado por Daniel (5 intervenciones) el 14/01/2009 13:26:22
Hola Ramiro, muchas gracias de nuevo :)

He seguido los pasos como me dices, pero a la hora de comparar las gráficas de ambas soluciones, no me salen parecidas, y siendo la solución de la misma función, deberían de serlo no?

Aquí te dejo lo que he hecho (el archivo p14a.m), por si hay algo mal. Te agradecería que le pudieses echar un vistazo, porque no se lo que hacer :S

http://danikaze.com/p14a.zip
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

RE:Resolucion ecuacion no linear

Publicado por ramiro (54 intervenciones) el 14/01/2009 16:21:03
Efectivamente, después de mandarte la respuesta, me quedó la duda sobre la fórmula que estaba utilizando para la y', resulta que la escribí al revés, disculpa que te haya hecho pasar ese mal rato, lo que pasó es que cometí un error de principiantes al recurrir a mi pésima memoria.
La fórmula correcta es y'=-Ft/Fy es decir sólo hay que invertir el orden de la fracción en el archivo F.m esto se puede hacer fácilmente abriendo el archivo F.m y mocdificando la instrucción para yp a l forma:
yp=-(t-2*t.*y+exp(y))./(y-t.^2+t.exp(y))
o bien, como estaba sólo agregale unos paréntesis al inicio y al final y elevalo al exponente -1.
Todo lo demás queda igual, si persisten las dudas escríbeme.
Saludos
Ramiro
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

RE:Resolucion ecuacion no linear

Publicado por Daniel (5 intervenciones) el 14/01/2009 17:12:21
Uff, ahora directamente se me queda colgado al ejecutarlo :S

-_-
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

RE:Resolucion ecuacion no linear

Publicado por Daniel (5 intervenciones) el 14/01/2009 22:44:14
Estuve haciendo unas pruebas más, y realmente esto es lo que me sale...

Aquí esta la gráfica de las funciones ploteadas:
http://img88.imageshack.us/img88/9433/graficamk3.jpg

Es correcto? No debería de ser la azul y la verde parecidas? :S
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

RE:Resolucion ecuacion no linear

Publicado por ramiro (54 intervenciones) el 15/01/2009 07:44:29
Daniel:
Lo que observas es debido a que ode45 es sólo un método aproximado para obtener las soluciones, la aproximación mejora conforme hacemos más pequeño el paso h, que en este caso se está tomando igual a 0.5, esto por supuesto no da una buena aproximación.
Aunado a esto tenemos el problema de extensión de las soluciones, la cual no se puede extender más alla de t=2, pues se interpone el valor complejo de y obtenido para t=2.5.
Sin haber hecho un análisis a fondo de la situación, me atrevo a plantear que la respuesta obtenida por ode45 y la de la curva solución sólo pueden converger una a la otra en el intervalo t=[0,2] y eso se podría observar haciendo más pequeño el paso h.
Todo eso suponiendo que no se interpondrán más valores complejos en alguno de los valores del intervalo seleccionado.
Espero mañan tener tiempo para hacer un análisis exhaustivo de la situación en cuanto a la convergencia y a la existencia de soluciones de la función que estás proponiendo en los máximos intervalos posibles.
Saludos
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

RE:Resolucion ecuacion no linear

Publicado por ramiro (54 intervenciones) el 15/01/2009 18:47:55
Daniel:
Continuando con el problema y usando otras opciones de matlab, he llegado a detectar una falla de origen en el problema.
La supuesta "función" que quieres trabajar no es tal, ya que no cualquier fórmula de dos variables defien a una función propiamente dicha, en este caso lo puedes ver tecleando lo siguiente en la ventana de comandos de matlab:
ezplot('(t^2+y^2)/2-t^2*y+t*exp(y)-4.5')
Ahí podrás observar que la gráfica asocia siempre dos valores para cada t>=0 y eso sucede aún imponiendole la condición y>0 para una t>2 aprox.
Esto, por supuesto, implica que la ecuación diferencial planteada tenga demasiadas restricciones, por ejemplo que la ecución que la define sea continua y eso impone condiciones para el denominador de la fórmula y'=-Ft/Fy, el cual debe cumplir con Fy~=0.
No quiero aburrirte ni cansarte con más detalles, lo que pasa es que mucho de lo que se presenta son algo así como fantasmas inexistentes debido a su dudoso origen .
Mejor te remito a un excelente artículo que ojalá puedas conseguir y que, espero, te dará mucha luz sobre lo que está pasando en este enfoque del problema:
Why teach existence and uniqueness theorems in the first course in ordinary differential equations? by C.E Roberts, Jr.
Indiana State University, Terre Haute, Indian U:SA.
INT.J.MATH.EDUC.SCI.TECHNOL.,1976,VOL. 7,NO.1,41-44
Quizá lo más apropiado sea cambiar el enfoque del problea para calcular la longitud de la curva deseada, porque esto de usar la ecuación diferencial no se ve muy prometedor.
Saludos.
Ramiro
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