[C con Clase] Offtopic: Método de diferencias finitas.. programa en c o algoritmo =3F?=

Agustín Cota Reguero clom2002 en yahoo.es
Vie Mar 9 14:22:37 CET 2007


Hola, un pequeño comentario a lo que escribio Steven, si no recuerdo mal de alguna vez que tuve que enfrentarme a este tipo de problemas, el hacer lo que dijo Steven no garantiza que la solución que obtengas sea la solución del problema. Asi pues antes de programar algo deberias asegurarte de que para tu problema la solucion del algoritmo converge a la del problema real.

Steven Davidson <steven en conclase.net> escribió: Hola Diego,

El pasado 2007-03-07 21:04:52, D1e6o! escribió:

D> Hola amigos.. Bueno, estoy en un gran problema, debo programar el método de
D> diferencias finitas para aproximar la ecuación de la onda
D> (d^2T/dt^2=alfa*d^T/dx^2) y creo que mi algoritmo está mal, ya que no me da
D> la solución que debería... lo debo hacer en maple, pero si por ahí alguien
D> lo tiene al algoritmo o el programa en c me serviría muchísimo..! ... Perdon
D> por molestar con esto, pero es que debo entregarlo y estoy en los últimos
D> días sin nada de información....! Y en el amigo google no encuentro nada de
D> nada.. Un saludo..!

Bueno, sería conveniente si nos mostraras el algoritmo que tienes y compararlo con el que escribiste. Sospecho que esto ya lo hiciste por tu cuenta, por lo que el otro detalle a analizar es el algoritmo o fórmula en sí.

Al hablar del método de diferencias finitas, realmente estamos hablando de un conjunto de métodos que son: diferencia posterior (o avanzada, o adelantada), diferencia anterior (o retrógrada), y diferencia central o centrada. Para la ecuación diferencial parcial a considerar, sugiero la diferencia central. La "versión" finita y discreta es la siguiente ecuación finita parcial (efp):

d^2T / dt^2 ~ ( T[j,m+1] - 2T[j,m] + T[j,m-1] ) / (Dt)^2
d^2T / dx^2 ~ ( T[j+1,m] - 2T[j,m] + T[j-1,m] ) / (Dx)^2

donde,

Dt := intervalo constante a "discretizar" para el tiempo, t
Dx := intervalo constante a "discretizar" para la longitud, x

x[] := {0,Dx,2Dx,3Dx,...,J*Dx}, donde tenemos J cantidad de intervalos
t[] := {0,Dt,2Dt,3Dt,...,M*Dt}, donde tenemos M cantidad de intervalos

x[j] := j*Dx
t[m] := m*Dt

T[j,m] := T(x[j],t[m]), la solución aproximada para x[j] y t[m]

La solución viene a ser:

T[j,m+1] = 2T[j,m] - T[j,m-1] + K ( T[j+1,m] - 2T[j,m] + T[j-1,m] ), donde

K = c^2 / (Dx/Dt)^2, donde c suele representar la velocidad de la onda

(Nota: En tu enunciado, has usado 'alfa' en lugar de c^2).


Obviamente, necesitamos saber las condiciones iniciales, que típicamente son:

1. T(x,0) = f(x)
2. dT(x,0)/t = g(x)

Usando la efp, las CC.II. finitas son:

1. T[j,0] = f(x[j]) = f(j*Dx)
2. ( T[j,1] - T[j,-1] ) / (2Dt) = g(x[j]) = g(j*Dx)


Espero que todo esto te ayude.

Steven
_______________________________________________
Lista de correo Cconclase Cconclase en listas.conclase.net
http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ


 		
---------------------------------

LLama Gratis a cualquier PC del Mundo.
Llamadas a fijos y móviles desde 1 céntimo por minuto.
http://es.voice.yahoo.com
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20070309/df5e46f1/attachment.html>


Más información sobre la lista de distribución Cconclase