Resolver ecuaciones diferenciales parciales
En una ecuación diferencial parcial (PDE), la función para la que se resuelve depende de varias variables y la ecuación diferencial puede incluir derivadas parciales tomadas con respecto a cada una de las variables. Las ecuaciones diferenciales parciales son útiles para modelar ondas, flujo de calor, dispersión de fluidos y otros fenómenos con un comportamiento espacial que cambia con el tiempo.
¿Qué tipos de PDE puede resolver con MATLAB?
El solver de PDE pdepe
de MATLAB® resuelve problemas de valores de límites iniciales para sistemas de varias PDE en una variable espacial x y de tiempo t. Puede considerarlos como varias ODE de una variable que también cambian con respecto al tiempo.
pdepe
utiliza una clasificación informal para las ecuaciones en 1D que resuelve:
Las ecuaciones con una derivada de tiempo son parabólicas. Un ejemplo es la ecuación del calor .
Las ecuaciones sin una derivada de tiempo son elípticas. Un ejemplo es la ecuación de Laplace .
pdepe
requiere al menos una ecuación parabólica en el sistema. En otras palabras, al menos una ecuación del sistema debe incluir una derivada de tiempo.
pdepe
también resuelve determinados problemas en 2D y 3D que se reducen a problemas en 1D debido a la simetría angular (consulte la descripción del argumento de la constante de simetría m
para obtener más información).
Partial Differential Equation Toolbox™ amplía esta función a los problemas generalizados en 2D y 3D con las condiciones de límites de Dirichlet y Neumann.
Resolver varias PDE en 1D
Una PDE en 1D incluye una función u(x,t) que depende del tiempo t y una variable espacial x. El solver de PDE pdepe
de MATLAB resuelve sistemas de varias PDE parabólicas y elípticas en 1D con el formato
La ecuación tiene las propiedades:
Las PDE se mantienen para t0 ≤ t ≤ tf y a ≤ x ≤ b.
El intervalo espacial [a, b] debe ser finito.
m
puede ser 0, 1 o 2, correspondientes a la simetría de placa, cilíndrica o esférica, respectivamente. Si m > 0, a ≥ 0 también se debe mantener.El coeficiente es un término de flujo y es un término de origen.
El término de flujo debe depender de la derivada parcial ∂u/∂x.
La combinación de las derivadas parciales con respecto al tiempo se restringe a la multiplicación por una matriz diagonal . Los elementos diagonales de esta matriz son cero o positivos. Un elemento que es cero corresponde a una ecuación elíptica, y cualquier otro elemento corresponde a una ecuación parabólica. Debe haber al menos una ecuación parabólica. Un elemento de c que corresponde a una ecuación parabólica puede desaparecer en valores aislados de x si son puntos de malla (puntos en los que se evalúa la solución). Se permiten las discontinuidades en c y en s debido a interferencias materiales, siempre y cuando se sitúe un punto de malla en cada interfaz.
Proceso de solución
Para resolver varias PDE con pdepe
, debe definir los coeficientes de ecuación para c, f y s, las condiciones iniciales, el comportamiento de la solución en los límites y una malla de puntos en la que evaluar la solución. La llamada de función sol = pdepe(m,pdefun,icfun,bcfun,xmesh,tspan)
utiliza esta información para calcular una solución en la malla especificada:
Juntos, los vectores xmesh
y tspan
forman una cuadrícula 2D en la que pdepe
evalúa la solución.
Ecuaciones
Debe expresar las PDE en el formato estándar que espera pdepe
. Si están escritas con este formato, puede leer los valores de los coeficientes c, f y s.
En MATLAB puede codificar las ecuaciones utilizando una función con el formato
function [c,f,s] = pdefun(x,t,u,dudx) c = 1; f = dudx; s = 0; end
pdefun
define la ecuación . Si hay varias ecuaciones, c, f y s son vectores con cada elemento que corresponde a una ecuación.Condiciones iniciales
En el momento inicial t = t0, para todas las x, los componentes de la solución satisfacen las condiciones iniciales con el formato
En MATLAB puede codificar las condiciones iniciales utilizando una función con el formato
function u0 = icfun(x) u0 = 1; end
u0 = 1
define una condición inicial de u0(x,t0) = 1. Si hay varias ecuaciones, u0
es un vector en el que cada elemento define la condición inicial de una ecuación.Condiciones de límites
En el límite x = a o x = b, para todas las t, los componentes de la solución satisfacen las condiciones de límites con el formato
q(x,t) es una matriz diagonal con elementos que son cero o que nunca son cero. Tenga en cuenta que las condiciones de límites se expresan en términos del flujo f, en lugar de la derivada parcial de u con respecto a x. Además, de los dos coeficientes p(x,t,u) y q(x,t), solo p puede depender de u.
En MATLAB puede codificar las condiciones de límites utilizando una función con el formato
function [pL,qL,pR,qR] = bcfun(xL,uL,xR,uR,t) pL = uL; qL = 0; pR = uR - 1; qR = 0; end
pL
y qL
son los coeficientes para el límite izquierdo, mientras que pR
y qR
son los coeficientes para el límite derecho. En este caso, bcfun
define las condiciones de límitesSi hay varias ecuaciones, las salidas pL
, qL
, pR
y qR
son vectores en los que cada elemento define la condición de límites de una ecuación.
Opciones de integración
Las propiedades de integración predeterminadas en el solver de PDE de MATLAB se seleccionan para tratar problemas frecuentes. En algunos casos, puede mejorar el rendimiento del solver anulando estos valores predeterminados. Para ello, utilice odeset
para crear una estructura de options
. Después, pase la estructura a pdepe
como el último argumento de entrada:
sol = pdepe(m,pdefun,icfun,bcfun,xmesh,tspan,options)
De las opciones del solver de ODE subyacente ode15s
, solo las que se muestran en la siguiente tabla están disponibles para pdepe
.
Categoría | Nombre de opción |
---|---|
Control de errores | |
Tamaño de paso | |
Registro de eventos |
Evaluar la solución
Después de resolver una ecuación con pdepe
, MATLAB devuelve la solución como un arreglo sol
en 3D, donde sol(i,j,k)
contiene el k
-ésimo componente de la solución evaluada en t(i)
y x(j)
. En general, puede extraer el k
-ésimo componente de la solución con el comando u = sol(:,:,k)
.
La malla temporal que especifica se usa solo para fines de salida y no afecta a las unidades de tiempo internas que toma el solver. Sin embargo, la malla espacial que especifica puede afectar a la calidad y la velocidad de la solución. Después de resolver una ecuación, puede utilizar pdeval
para evaluar la estructura de solución que devuelve pdepe
con una malla espacial diferente.
Ejemplo: la ecuación del calor
Un ejemplo de PDE parabólica es la ecuación del calor en una dimensión:
Esta ecuación describe la disipación del calor en y . El objetivo es resolver la temperatura . Inicialmente, la temperatura es una constante distinta de cero, así que la condición inicial es
Además, la temperatura es cero en el límite izquierdo y distinta de cero en el límite derecho, así que las condiciones de límites son
Para resolver esta ecuación en MATLAB®, debe codificar la ecuación, las condiciones iniciales y las condiciones de límites y, después, seleccionar una malla de solución adecuada antes de llamar al solver pdepe
. Puede incluir las funciones requeridas como funciones locales al final de un archivo (como en este ejemplo) o guardarlas como archivos denominados separados en un directorio de la ruta de MATLAB.
Codificar la ecuación
Antes de poder codificar la ecuación, debe asegurarse de que tiene el formato que espera el solver pdepe
:
Con este formato, la ecuación del calor es
Por lo tanto, los valores de los coeficientes son los que siguen:
El valor de se pasa como un argumento a pdepe
, mientras que los demás coeficientes se codifican en una función para la ecuación, que es
function [c,f,s] = heatpde(x,t,u,dudx) c = 1; f = dudx; s = 0; end
(Nota: todas las funciones se incluyen como funciones locales al final del ejemplo).
Codificar la condición inicial
La función de condición inicial para la ecuación del calor asigna un valor constante para . Esta función debe aceptar una entrada para , aunque no se utilice.
function u0 = heatic(x) u0 = 0.5; end
Codificar las condiciones de límites
El formato estándar para las condiciones de límites que espera el solver pdepe
es
Si están escritas con este formato, las condiciones de límites para este problema son
Por lo tanto, los valores para y son
.
La función correspondiente es
function [pl,ql,pr,qr] = heatbc(xl,ul,xr,ur,t) pl = ul; ql = 0; pr = ur - 1; qr = 0; end
Seleccionar una malla de solución
Utilice una malla espacial de 20 puntos y una malla de tiempo de 30 puntos. Puesto que la solución alcanza un estado estable con rapidez, los puntos de tiempo cercanos a se distribuyen con menor distancia entre ellos para capturar este comportamiento en la salida.
L = 1; x = linspace(0,L,20); t = [linspace(0,0.05,20), linspace(0.5,5,10)];
Resolver la ecuación
Por último, resuelva la ecuación utilizando la simetría , la PDE, la condición inicial, las condiciones de límites y las mallas para y .
m = 0; sol = pdepe(m,@heatpde,@heatic,@heatbc,x,t);
Representar la solución
Utilice imagesc
para visualizar la matriz de la solución.
colormap hot imagesc(x,t,sol) colorbar xlabel('Distance x','interpreter','latex') ylabel('Time t','interpreter','latex') title('Heat Equation for $0 \le x \le 1$ and $0 \le t \le 5$','interpreter','latex')
Funciones locales
function [c,f,s] = heatpde(x,t,u,dudx) c = 1; f = dudx; s = 0; end function u0 = heatic(x) u0 = 0.5; end function [pl,ql,pr,qr] = heatbc(xl,ul,xr,ur,t) pl = ul; ql = 0; pr = ur - 1; qr = 0; end
Ejemplos de PDE y archivos
Hay varios archivos de ejemplo disponibles que sirven como puntos iniciales perfectos para la mayoría de los problemas frecuentes de PDE en 1D. Utilice la app Differential Equations Examples para explorar y ejecutar ejemplos. Para ejecutar esta app, escriba
odeexamples
Para abrir un archivo individual para editar, escriba
edit exampleFileName.m
Para ejecutar un ejemplo, escriba
exampleFileName
Esta tabla contiene una lista de los archivos de ejemplo de PDE disponibles.
Archivo de ejemplo | Descripción | Enlace del ejemplo |
---|---|---|
| PDE sencilla que ilustra la formulación, el cálculo y la representación de la solución. | |
| Problema que implica discontinuidades. | |
| Problema que requiere valores de cálculo de la derivada parcial. | |
| Sistema de dos PDE cuya solución tiene capas de límites en ambos extremos del intervalo y cambia rápidamente en t pequeños. | |
| Sistema de varias PDE con funciones de pasos como condiciones iniciales. |
Referencias
[1] Skeel, R. D. and M. Berzins, "A Method for the Spatial Discretization of Parabolic Equations in One Space Variable," SIAM Journal on Scientific and Statistical Computing, Vol. 11, 1990, pp. 1–32.
Consulte también
bvp4c
| ode45
| pdepe
| odeset
| pdeval