[C con Clase] Offtopic: Método de diferencias finitas.. programa en c o algoritmo?
José Francisco
jfmunozg en yahoo.es
Jue Oct 8 14:02:39 CEST 2009
debo programar el método de diferencias finitas para aproximar la ecuación de la ondas, para un trabajo de una asignatura.
(d^2T/dt^2=alfa*d^T/dx^2) y creo que mi algoritmo está mal, ya que no
me da la solución que debería... lo debo hacer en C o en Visual, pero si por ahí
He probado con lo siguiente:
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
>
> 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)
!
Nada que tengo un lio de un par de narices, se que EDU hizo algo parecido, y me sería de gran ayuda ver que problemas tubo.
En definitiva si alguien me puede ayudar le estaría enternamente agradecido, pues estoy en una situacion muy complicada a punto de suspender la asiganatura.
UN SALUDO
Más información sobre la lista de distribución Cconclase