Foros-FIUBA Foros HostingPortal
 FAQ  •  Buscar  •  Wiki  •  Apuntes  •  Planet  •  Mapa  •  Eyeon  •  Chat
Preferencias  •  Grupos de Usuarios
Registrarse  •  Perfil  •  Entrá para ver tus mensajes privados  •  Login
Ver tema siguiente
Ver tema anterior

Responder al tema Ver tema anteriorEnviar por mail a un amigo.Mostrar una Lista de los Usuarios que vieron este TemaGuardar este Tema como un archivoPrintable versionEntrá para ver tus mensajes privadosVer tema siguiente
Autor Mensaje
lavo
Nivel 6


Edad: 96
Registrado: 02 Nov 2007
Mensajes: 270

Carrera: Mecánica
argentina.gif
MensajePublicado: Sab Nov 15, 2008 2:47 pm  Asunto:  TP 2 An Numérico Menéndez - Cavaliere- Tarela ayuda programa Responder citandoFin de la PáginaVolver arriba

Hola, cursé Computación con Burín, y la verdad es que no aprendí un carajo de Pascal y ahora me encuentro con el problema de tener que programar Runge Kutta de orden 4 para resolver una ec dif de seg orden, hasta ahora tengo esto....

http://webs.uolsinectis.com.ar/laureano2/num_rico.bmp

Haciendo el cambio de variables queda un sistema de primer orden. El enunciado del TP esta acá la primer parte ya la hice):

http://www.geocities.com/anfiubac4/tps/tp2.pdf

El problema es que no sé si puedo poner la función seno en el Pascal y otra cosa que no se es como hacer para definir esa F(x,v,t) que en mi caso sería un seno. Lo hago de tres variables, o eso sólo me expresa x depende de las otras dos variables??
Otra cosa que no se hacer es para el caso de L2 y L3, el paso de tiempo es h/2, y en el resto es h, entonces no podría hacer un repeat con "t:=t+h" siempre, no??
Como verán estoy bastante perdido, si alguien me puede dar una mano se lo agradezco

_________________
In poverta mia lieta scialo da gran signore
rimi ed inni d'amore.
Per sogni e per chimere e per castelli in aria

l'anima ho milionaria

Sagitario Género:Masculino Gato OfflineGalería Personal de lavoVer perfil de usuarioEnviar mensaje privadoEnviar email
Gualicho
Nivel 8


Edad: 35
Registrado: 18 Sep 2007
Mensajes: 715
Ubicación: En el templo de Momo...
Carrera: Informática
blank.gif
MensajePublicado: Sab Nov 15, 2008 3:59 pm  Asunto:  (Sin Asunto) Responder citandoFin de la PáginaVolver arriba

Buenas,

Para empezar, tranquilo con el tp... salir termina saliendo, aprovecha cada clase practica que puedas para ir a preguntar las dudas que te vayan surgiendo.

Existe una funcion que te calcula el seno en pascal: sin(X). Aca te dejo un ejemplo de como se usa. Prestale atencion a esto que alguien comenta en ese link:
Cita:
Pascal no trabaja con grados, sino con radianes


Respecto a lo demas, la verdad que no entiendo muy bien lo que preguntas... despues trato de leer con un poco mas de cuidado el enunciado y lo que escribiste. Por lo pronto te dejo el codigo de una funcion con la cual yo resolvia con R-K 4. Es en otro lenguaje y en otro paradigma, asi que no le prestes mucha atencion a la sintaxis, fijate principalmente los parametros que le paso... vos ademas de estos, tambien le vas a pasar los vectores que vayas a usar adentro de la funcion.

Código:
 public void resolucionEcDiferencialRK4(int pasoTiempo, double valInicial, int cantidadPasos){
      

      solucion[0]=valInicial;
      
      double q1=0;
      double q2=0;   
      double q3=0;
      double q4=0;
      
      for (int i=0;i<cantidadPasos-1;i++){
         q1=pasoTiempo*((solucion[i]+this.excedente[i]) / this.respSistema);
         q2=pasoTiempo*(((solucion[i]+q1*0.5)+this.excedente[i]) / this.respSistema);
         q3=pasoTiempo*(((solucion[i]+q2*0.5)+this.excedente[i]) / this.respSistema);
         q4=pasoTiempo*(((solucion[i]+q3)+this.excedente[i]) / this.respSistema);
         solucion[i+1]=solucion[i]+ (1.0/6.0)*(q1+2.0*q2+2.0*q3+q4);
      }
      
   }


Vos vas a programar a la funcion para un paso de tiempo GENERICO.

Saludos, y mucha suerte.

_________________
"Por eso te pido (amigo desconocido), si ves a mi rock perdido, lo traigas por aqui!"

Cancer Género:Masculino Dragón OcultoGalería Personal de GualichoVer perfil de usuarioEnviar mensaje privadoEnviar email
lavo
Nivel 6


Edad: 96
Registrado: 02 Nov 2007
Mensajes: 270

Carrera: Mecánica
argentina.gif
MensajePublicado: Sab Nov 15, 2008 8:10 pm  Asunto:  (Sin Asunto) Responder citandoFin de la PáginaVolver arriba

Gualicho escribió:
Buenas,

Para empezar, tranquilo con el tp... salir termina saliendo, aprovecha cada clase practica que puedas para ir a preguntar las dudas que te vayan surgiendo.

Existe una funcion que te calcula el seno en pascal: sin(X). Aca te dejo un ejemplo de como se usa. Prestale atencion a esto que alguien comenta en ese link:
Cita:
Pascal no trabaja con grados, sino con radianes


Respecto a lo demas, la verdad que no entiendo muy bien lo que preguntas... despues trato de leer con un poco mas de cuidado el enunciado y lo que escribiste. Por lo pronto te dejo el codigo de una funcion con la cual yo resolvia con R-K 4. Es en otro lenguaje y en otro paradigma, asi que no le prestes mucha atencion a la sintaxis, fijate principalmente los parametros que le paso... vos ademas de estos, tambien le vas a pasar los vectores que vayas a usar adentro de la funcion.

Código:
 public void resolucionEcDiferencialRK4(int pasoTiempo, double valInicial, int cantidadPasos){
      

      solucion[0]=valInicial;
      
      double q1=0;
      double q2=0;   
      double q3=0;
      double q4=0;
      
      for (int i=0;i<cantidadPasos-1;i++){
         q1=pasoTiempo*((solucion[i]+this.excedente[i]) / this.respSistema);
         q2=pasoTiempo*(((solucion[i]+q1*0.5)+this.excedente[i]) / this.respSistema);
         q3=pasoTiempo*(((solucion[i]+q2*0.5)+this.excedente[i]) / this.respSistema);
         q4=pasoTiempo*(((solucion[i]+q3)+this.excedente[i]) / this.respSistema);
         solucion[i+1]=solucion[i]+ (1.0/6.0)*(q1+2.0*q2+2.0*q3+q4);
      }
      
   }


Vos vas a programar a la funcion para un paso de tiempo GENERICO.

Saludos, y mucha suerte.


Lo que yo no entiendo es lo que dice en la foto que subí del método RK genérico para una F(x,v,t). Eso no lo puedo entender, porque en mi caso, la F es un seno, entonces cuando programo, no puedo poner
L1:= h*sin(x,v,t), no?? Porque el seno el Pascal lo toma como de una variable sola. Yo lo que no entiendo es la fórmula genérica que subí, es decir, al seno lo tengo que evaluar sólo en mi x, o pongo todo lo demás como me lo indica??

_________________
In poverta mia lieta scialo da gran signore
rimi ed inni d'amore.
Per sogni e per chimere e per castelli in aria

l'anima ho milionaria

Sagitario Género:Masculino Gato OfflineGalería Personal de lavoVer perfil de usuarioEnviar mensaje privadoEnviar email
Juan José
Nivel 8


Edad: 37
Registrado: 14 Ago 2007
Mensajes: 707
Ubicación: Boulogne
Carrera: Civil
argentina.gif
MensajePublicado: Sab Nov 15, 2008 8:53 pm  Asunto:  (Sin Asunto) Responder citandoFin de la PáginaVolver arriba

lavo escribió:
Gualicho escribió:
Buenas,

Para empezar, tranquilo con el tp... salir termina saliendo, aprovecha cada clase practica que puedas para ir a preguntar las dudas que te vayan surgiendo.

Existe una funcion que te calcula el seno en pascal: sin(X). Aca te dejo un ejemplo de como se usa. Prestale atencion a esto que alguien comenta en ese link:
Cita:
Pascal no trabaja con grados, sino con radianes


Respecto a lo demas, la verdad que no entiendo muy bien lo que preguntas... despues trato de leer con un poco mas de cuidado el enunciado y lo que escribiste. Por lo pronto te dejo el codigo de una funcion con la cual yo resolvia con R-K 4. Es en otro lenguaje y en otro paradigma, asi que no le prestes mucha atencion a la sintaxis, fijate principalmente los parametros que le paso... vos ademas de estos, tambien le vas a pasar los vectores que vayas a usar adentro de la funcion.

Código:
 public void resolucionEcDiferencialRK4(int pasoTiempo, double valInicial, int cantidadPasos){
      

      solucion[0]=valInicial;
      
      double q1=0;
      double q2=0;   
      double q3=0;
      double q4=0;
      
      for (int i=0;i<cantidadPasos-1;i++){
         q1=pasoTiempo*((solucion[i]+this.excedente[i]) / this.respSistema);
         q2=pasoTiempo*(((solucion[i]+q1*0.5)+this.excedente[i]) / this.respSistema);
         q3=pasoTiempo*(((solucion[i]+q2*0.5)+this.excedente[i]) / this.respSistema);
         q4=pasoTiempo*(((solucion[i]+q3)+this.excedente[i]) / this.respSistema);
         solucion[i+1]=solucion[i]+ (1.0/6.0)*(q1+2.0*q2+2.0*q3+q4);
      }
      
   }


Vos vas a programar a la funcion para un paso de tiempo GENERICO.

Saludos, y mucha suerte.


Lo que yo no entiendo es lo que dice en la foto que subí del método RK genérico para una F(x,v,t). Eso no lo puedo entender, porque en mi caso, la F es un seno, entonces cuando programo, no puedo poner
L1:= h*sin(x,v,t), no?? Porque el seno el Pascal lo toma como de una variable sola. Yo lo que no entiendo es la fórmula genérica que subí, es decir, al seno lo tengo que evaluar sólo en mi x, o pongo todo lo demás como me lo indica??


Claro, es la F evaluada. La idea de hacer eso es para obtener puntos, sin hacerlo de manera genérica. Después graficás con los puntos que obtuviste y de ahí calculás el período (que es el objetivo del ejercicio).

O al menos, así lo entiendo yo.

_________________
"No hay mejor fascista que un burgues resentido"


"Hay dos cosas infinitas: el universo y la estupidez. Aunque del Universo no estoy muy seguro" (Albert Einstein).

Leo Género:Masculino Tigre OfflineGalería Personal de Juan JoséVer perfil de usuarioEnviar mensaje privadoEnviar emailMSN Messenger
lavo
Nivel 6


Edad: 96
Registrado: 02 Nov 2007
Mensajes: 270

Carrera: Mecánica
argentina.gif
MensajePublicado: Sab Nov 15, 2008 11:28 pm  Asunto:  (Sin Asunto) Responder citandoFin de la PáginaVolver arriba

Si, pero si fuese la F evaluada solamente en x, entonces, como hago que el tiempo transcurra, por ej en un FOR. O el tiempo lo hago transcurrir sumando h una y otra vez hasta llegar a un valor límite?
La verdad que no entiendo como funciona el método Runge Kutta en realidad...

_________________
In poverta mia lieta scialo da gran signore
rimi ed inni d'amore.
Per sogni e per chimere e per castelli in aria

l'anima ho milionaria

Sagitario Género:Masculino Gato OfflineGalería Personal de lavoVer perfil de usuarioEnviar mensaje privadoEnviar email
Juan José
Nivel 8


Edad: 37
Registrado: 14 Ago 2007
Mensajes: 707
Ubicación: Boulogne
Carrera: Civil
argentina.gif
MensajePublicado: Dom Nov 16, 2008 12:38 am  Asunto:  (Sin Asunto) Responder citandoFin de la PáginaVolver arriba

lavo escribió:
Si, pero si fuese la F evaluada solamente en x, entonces, como hago que el tiempo transcurra, por ej en un FOR. O el tiempo lo hago transcurrir sumando h una y otra vez hasta llegar a un valor límite?
La verdad que no entiendo como funciona el método Runge Kutta en realidad...


Creo que vas obteniendo puntos. ¿Cuando parar?, la verdad que no lo se (¿Cómo hiciste el primer ejercicio, cuando lo hiciste parar?).

Supongo que algo te tienen que decir en tu cátedra, en donde estoy yo (Cavaliere) directamente no explicaron el método y dijeron que el criterio de corte quedaba a criterio.

Ah, y creo que te conviene usar un Repeat, comenzando de un valor inicial (y hay que ver cuándo pararlo...) antes que un For.

_________________
"No hay mejor fascista que un burgues resentido"


"Hay dos cosas infinitas: el universo y la estupidez. Aunque del Universo no estoy muy seguro" (Albert Einstein).

Leo Género:Masculino Tigre OfflineGalería Personal de Juan JoséVer perfil de usuarioEnviar mensaje privadoEnviar emailMSN Messenger
Dx9
Moderador


Edad: 37
Registrado: 03 Ene 2007
Mensajes: 1552

Carrera: Informática
argentina.gif
MensajePublicado: Dom Nov 16, 2008 12:52 am  Asunto:  (Sin Asunto) Responder citandoFin de la PáginaVolver arriba

Es dificil este tp? Yo recien lo puedo comenzar a hacer el martes, y ni empeze a ver los temas despues del parcial :S

_________________
Biblioteca Apuntes

Aries Género:Masculino Gato OcultoGalería Personal de Dx9Ver perfil de usuarioEnviar mensaje privadoVisitar sitio web del usuario
lavo
Nivel 6


Edad: 96
Registrado: 02 Nov 2007
Mensajes: 270

Carrera: Mecánica
argentina.gif
MensajePublicado: Dom Nov 16, 2008 12:53 am  Asunto:  (Sin Asunto) Responder citandoFin de la PáginaVolver arriba

Bue, veo que estamos en la misma...
La primer parte la hice con Romberg a "mano" como se pedía. El criterio de corte lo hice poniendo un error relativo menor al 1%, es decir,
(Ri,j - Ri, j-1)/Ri,j <0.01. Yo medio que me zarpé con el orden de Romberg y me dió un error relativo muy chico, pero no creo que haya problema...
Con respecto al método, en mi cátedra tampoco lo explicaron, asi que no estoy seguro que es lo que se varía, si voy incrementando el h de a poco o si solamente dejo todo como esta y voy haciendo las iteraciones sin tocar el h en cada paso.
Medio confuso todo.... más aún con Cavaliere en la teórica....

_________________
In poverta mia lieta scialo da gran signore
rimi ed inni d'amore.
Per sogni e per chimere e per castelli in aria

l'anima ho milionaria

Sagitario Género:Masculino Gato OfflineGalería Personal de lavoVer perfil de usuarioEnviar mensaje privadoEnviar email
lavo
Nivel 6


Edad: 96
Registrado: 02 Nov 2007
Mensajes: 270

Carrera: Mecánica
argentina.gif
MensajePublicado: Dom Nov 16, 2008 12:55 am  Asunto:  (Sin Asunto) Responder citandoFin de la PáginaVolver arriba

Dx9 escribió:
Es dificil este tp? Yo recien lo puedo comenzar a hacer el martes, y ni empeze a ver los temas despues del parcial :S


Para mi si, bah, soy un desastre programando, pero supongo que para un informatico debe salir con fritas.

PD: vos no te sentaste en el primer banco a la izq el lunes en la teórica???

_________________
In poverta mia lieta scialo da gran signore
rimi ed inni d'amore.
Per sogni e per chimere e per castelli in aria

l'anima ho milionaria

Sagitario Género:Masculino Gato OfflineGalería Personal de lavoVer perfil de usuarioEnviar mensaje privadoEnviar email
Dx9
Moderador


Edad: 37
Registrado: 03 Ene 2007
Mensajes: 1552

Carrera: Informática
argentina.gif
MensajePublicado: Dom Nov 16, 2008 1:10 am  Asunto:  (Sin Asunto) Responder citandoFin de la PáginaVolver arriba

lavo escribió:
PD: vos no te sentaste en el primer banco a la izq el lunes en la teórica???


Si, nos conocemos? Shocked

_________________
Biblioteca Apuntes

Aries Género:Masculino Gato OcultoGalería Personal de Dx9Ver perfil de usuarioEnviar mensaje privadoVisitar sitio web del usuario
lavo
Nivel 6


Edad: 96
Registrado: 02 Nov 2007
Mensajes: 270

Carrera: Mecánica
argentina.gif
MensajePublicado: Dom Nov 16, 2008 10:17 am  Asunto:  (Sin Asunto) Responder citandoFin de la PáginaVolver arriba

Dx9 escribió:
lavo escribió:
PD: vos no te sentaste en el primer banco a la izq el lunes en la teórica???


Si, nos conocemos? Shocked


No, pero escuché que habías tomado (en el parcial de Física IIA) el ej. sobre el plano x,y. Y después ví en el foro que comentaste lo mismo, asi que tenía que ser mucha casualidad...

_________________
In poverta mia lieta scialo da gran signore
rimi ed inni d'amore.
Per sogni e per chimere e per castelli in aria

l'anima ho milionaria

Sagitario Género:Masculino Gato OfflineGalería Personal de lavoVer perfil de usuarioEnviar mensaje privadoEnviar email
yuafan2
Nivel 4


Edad: 36
Registrado: 06 Feb 2007
Mensajes: 69
Ubicación: San Miguel - Bs As.
Carrera: Informática
argentina.gif
MensajePublicado: Jue Nov 20, 2008 7:18 pm  Asunto:  (Sin Asunto) Responder citandoFin de la PáginaVolver arriba

Alguien sabe como calcular el error relativo en runge kutta??? encontre q la cota es el valor real - el valor encontrado en modulo, el problema es q es imposible encontrar el valor real para cada tiempo..., y creo q no es la idea tampoco.


Libra Género:Masculino Gato OfflineGalería Personal de yuafan2Ver perfil de usuarioEnviar mensaje privadoEnviar emailVisitar sitio web del usuarioMSN MessengerNúmero ICQ
Gualicho
Nivel 8


Edad: 35
Registrado: 18 Sep 2007
Mensajes: 715
Ubicación: En el templo de Momo...
Carrera: Informática
blank.gif
MensajePublicado: Vie Nov 21, 2008 12:09 am  Asunto:  (Sin Asunto) Responder citandoFin de la PáginaVolver arriba

yuafan2 escribió:
Alguien sabe como calcular el error relativo en runge kutta??? encontre q la cota es el valor real - el valor encontrado en modulo, el problema es q es imposible encontrar el valor real para cada tiempo..., y creo q no es la idea tampoco.


Hola Juan,

Al menos el cuatrimestre pasado, con el tema de los errores eran muy flexibles... No pretendian que usemos una formula en particular, sino que trates de pensar como podias plantear al error.

Una de las cosas que podias hacer es lo siguiente: usas un paso de tiempo muy chico y calculas la solucion. La resta entre esta solucion y la solucion del progrma general te sirve de cota para el error. Si la solucion es un vector, le calculas alguna norma y listo...

mi tp escribió:
Para poder calcular el error de discretizacion tendremos que analizar los resultados que obtendríamos si trabajáramos con un paso de tiempo menor. Como tenemos asegurada la convergencia, podemos afirmar que tenemos una cota del error de discretizacion mediante la siguiente formula:

[tex] | \alpha - X_n | \leq| X_{n+1}-X_n |[/tex]

En la formula, α representa al valor exacto (que no podemos calcular), [tex] X_n  [/tex] representa al valor obtenido y [tex]  X_{n+1} [/tex]representa al valor que obtendríamos si hubiéramos trabajado con un paso de tiempo menor.



Saludos.

_________________
"Por eso te pido (amigo desconocido), si ves a mi rock perdido, lo traigas por aqui!"

Cancer Género:Masculino Dragón OcultoGalería Personal de GualichoVer perfil de usuarioEnviar mensaje privadoEnviar email
yuafan2
Nivel 4


Edad: 36
Registrado: 06 Feb 2007
Mensajes: 69
Ubicación: San Miguel - Bs As.
Carrera: Informática
argentina.gif
MensajePublicado: Vie Nov 21, 2008 12:14 am  Asunto:  (Sin Asunto) Responder citandoFin de la PáginaVolver arriba

si, pero el problema es q yo necesito una condicion de corte...., no me dicen los pasos, sino que tengo q iterar hasta volver al valor inicial... el problema es q no va a ser exacto..., Yo habia pensado como condicion de corte A+- 1% como corte...., en cuanto entre a ese rango corta,y el error lo calcularia como bien dijiste vos....

Peor no se si estara correcto


Libra Género:Masculino Gato OfflineGalería Personal de yuafan2Ver perfil de usuarioEnviar mensaje privadoEnviar emailVisitar sitio web del usuarioMSN MessengerNúmero ICQ
Gualicho
Nivel 8


Edad: 35
Registrado: 18 Sep 2007
Mensajes: 715
Ubicación: En el templo de Momo...
Carrera: Informática
blank.gif
MensajePublicado: Vie Nov 21, 2008 12:28 am  Asunto:  (Sin Asunto) Responder citandoFin de la PáginaVolver arriba

yuafan2 escribió:
si, pero el problema es q yo necesito una condicion de corte...., no me dicen los pasos, sino que tengo q iterar hasta volver al valor inicial... el problema es q no va a ser exacto..., Yo habia pensado como condicion de corte A+- 1% como corte...., en cuanto entre a ese rango corta,y el error lo calcularia como bien dijiste vos....

Peor no se si estara correcto


Primero que nada, fijate que lo que te escribi yo es para el error absoluto, para calcular el relativo acordate de dividir por el valor representativo.

Usando el procedimiento que te explique en el otro post, tenes que encontrar un paso de tiempo para el cual se cumpla la condicion de un error relativo menor a 1%.

Gracias a esto, [tex] | \alpha - X_n | \leq| X_{n+1}-X_n |[/tex], va a estar garantizado que habra un error menor al 1% respecto de la solucion EXACTA.

_________________
"Por eso te pido (amigo desconocido), si ves a mi rock perdido, lo traigas por aqui!"

Cancer Género:Masculino Dragón OcultoGalería Personal de GualichoVer perfil de usuarioEnviar mensaje privadoEnviar email
Mostrar mensajes de anteriores:      
Responder al tema Ver tema anteriorEnviar por mail a un amigo.Mostrar una Lista de los Usuarios que vieron este TemaGuardar este Tema como un archivoPrintable versionEntrá para ver tus mensajes privadosVer tema siguiente

Ver tema siguiente
Ver tema anterior
Podés publicar nuevos temas en este foro
No podés responder a temas en este foro
No podés editar tus mensajes en este foro
No podés borrar tus mensajes en este foro
No podés votar en encuestas en este foro
No Podéspostear archivos en este foro
No Podés bajar archivos de este foro


Todas las horas son ART, ARST (GMT - 3, GMT - 2 Horas)
Protected by CBACK CrackerTracker
365 Attacks blocked.

Powered by phpBB2 Plus, phpBB Styles and Kostenloses Forum based on phpBB © 2001/6 phpBB Group :: FI Theme :: Mods y Créditos

Foros-FIUBA está hosteado en Neolo.com Cloud Hosting

[ Tiempo: 0.4900s ][ Pedidos: 20 (0.3405s) ]