A continuación, encontrará una implementación sencilla de BDF2 que escribí para una asignación anterior que resuelve la ecuación de calor 2D utilizando el método BDF2.
Necesitará los datos iniciales, en el archivo heat2d_data.mat
, que se pueden encontrar al final de esta página: Soluciones numéricas de ecuaciones diferenciales. También debe obtener el archivo heat2d_plot.m
de esa misma página para poder trazar las soluciones.
Esos datos iniciales contienen una matriz [matemática] K [/ matemática] y la condición inicial [matemática] u_ {0} [/ matemática], donde la ecuación de calor 2D es [matemática] u ‘= Ku [/ matemática].
El siguiente programa MATLAB resuelve [matemática] u (T) [/ matemática] donde [matemática] T [/ matemática] es la última vez, pero muestra la gráfica en el camino y almacena soluciones intermedias que pueden obtenerse simplemente eliminando el último línea, u = u(:, end);
De la fuente.
- ¿Qué tan importante es conocer las pruebas matemáticas para usar las matemáticas aplicadas?
- ¿Por qué hay una ley de grupo en una curva elíptica?
- ¿Qué implica la representación de la ventana de tiempo de un creador de claves como un múltiplo de pi sobre la arquitectura matricial?
- ¿Cuál es el fondo más deseable para un trabajo como criptógrafo?
- Números primos: ¿Hay alguna investigación sobre la aplicación de la teoría de grafos para generar tamices primarios?
Recuerde que BDF2 requiere una condición inicial, así como un paso inicial. Para obtener la aproximación para el paso inicial, este programa realiza un paso de Backward Euler. Esto debería estar claro en el código.
Para comenzar, intente ejecutarlo con T = 10
, h = 1/10000
.
función u = calor2d_bdf (T, h) % T es el tiempo final, h es el tamaño de pasos % Cargar los datos iniciales cargar heat2d_data; % Establezca el valor inicial en el valor de u0, a partir de los datos iniciales. u (:, 1) = u0; % De Euler hacia atrás para el primer paso de BDF2 u (:, 2) = (ojo (longitud (u0), longitud (u0)) - h * K) \ u (:, 1); para i = 3: T / h + 1 % De diferenciación hacia atrás forumla 2 pasos u (:, i) = (1/3) * (4 * u (:, i-1) -u (:, i-2) + 2 * h * K * u (:, i-1)); % Trace la solución que se acaba de calcular heat2d_plot (xin, yin, u (:, i)); fin % Devuelve la solución en el momento final u = u (:, fin); fin