Main Content

La traducción de esta página aún no se ha actualizado a la versión más reciente. Haga clic aquí para ver la última versión en inglés.

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 ut=2ux2.

  • Las ecuaciones sin una derivada de tiempo son elípticas. Un ejemplo es la ecuación de Laplace 2ux2=0.

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

c(x,t,u,ux)ut=xmx(xmf(x,t,u,ux))+s(x,t,u,ux).

La ecuación tiene las propiedades:

  • Las PDE se mantienen para t0ttf y axb.

  • 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 f(x,t,u,ux) es un término de flujo y s(x,t,u,ux) 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 c(x,t,u,ux). 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:

  • m es la constante de simetría.

  • pdefun define las ecuaciones que se resuelven.

  • icfun define las condiciones iniciales.

  • bcfun define las condiciones de límites.

  • xmesh es un vector de valores espaciales para x.

  • tspan es un vector de valores de tiempo para t.

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
En este caso, pdefun define la ecuación ut=2ux2. 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

u(x,t0)=u0(x).

En MATLAB puede codificar las condiciones iniciales utilizando una función con el formato

function u0 = icfun(x)
u0 = 1;
end
En este caso, 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

p(x,t,u)+q(x,t)f(x,t,u,ux)=0.

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ímites

uL(xL,t)=0uR(xR,t)=1

Si 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

RelTol, AbsTol, NormControl

Tamaño de paso

InitialStep, MaxStep

Registro de eventos

Events

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:

ut=2ux2.

Esta ecuación describe la disipación del calor en 0xL y t0. El objetivo es resolver la temperatura u(x,t). Inicialmente, la temperatura es una constante distinta de cero, así que la condición inicial es

u(x,0)=T0.

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

u(0,t)=0,

u(L,t)=1.

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:

c(x,t,u,ux)ut=x-mx(xmf(x,t,u,ux))+s(x,t,u,ux).

Con este formato, la ecuación del calor es

1ut=x0x(x0ux)+0.

Por lo tanto, los valores de los coeficientes son los que siguen:

  • m=0

  • c=1

  • f=ux

  • s=0

El valor de m 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 u0. Esta función debe aceptar una entrada para x, 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

p(x,t,u)+q(x,t)f(x,t,u,ux)=0.

Si están escritas con este formato, las condiciones de límites para este problema son

u(0,t)+(0f)=0,

(u(L,t)-1)+(0f)=0.

Por lo tanto, los valores para p y q son

  • pL=uL, qL=0.

  • pR=uR-1, qR=0.

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 t=0 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 m, la PDE, la condición inicial, las condiciones de límites y las mallas para x y t.

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')

Figure contains an axes object. The axes object with title Heat Equation for 0 less equals x less equals 1 and 0 less equals t less equals 5, xlabel Distance x, ylabel Time t contains an object of type image.

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

pdex1

PDE sencilla que ilustra la formulación, el cálculo y la representación de la solución.

Solve Single PDE

pdex2

Problema que implica discontinuidades.

Solve PDE with Discontinuity

pdex3

Problema que requiere valores de cálculo de la derivada parcial.

Solve PDE and Compute Partial Derivatives

pdex4

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.

Solve System of PDEs

pdex5

Sistema de varias PDE con funciones de pasos como condiciones iniciales.

Solve System of PDEs with Initial Condition Step Functions

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

| | | |

Temas relacionados