[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