MATLAB.Exponenta
–Û·Ë͇ Matlab&Toolboxes

Математика\Partial Differential Equations Toolbox

Функции ядра MATLAB для решения одномерных нестационарных PDE

pdepe

Решатель одномерных краевых задач для систем параболических и эллиптических дифференциальных уравнений в частных производных (PDE), содержащих операции дифференцирования первого порядка по одной пространственной переменной и времени

Синтаксис:

sol = pdepe(m,pdefun,icfun,bcfun,xmesh,tspan)
sol = pdepe(m,pdefun,icfun,bcfun,xmesh,tspan,options)
sol = pdepe(m,pdefun,icfun,bcfun,xmesh,tspan,options,p1,p2...)

Аргументы:

m – параметр, соответствующий симметрии проблемы: m = 0 – “плоская” симметрия (m=0 соответствует плоскопараллельной краевой задаче), m = 1 цилиндрическая симметрия, m = 2 – сферическая симметрия.
pdefun – функция пользователя, которая определяет коэффициенты PDE.
icfun – функция пользователя, которая определяет начальные условия.
bcfun – функция пользователя, которая определяет граничные условия.
xmesh – вектор [x0, x1, ..., xn] , задающий координаты x точек, в которых численное решение требуется для каждого значения в tspan (xmesh – массив координат узлов одномерной сетки по пространственной координате x, см. уравнение (1.1)). Элементы xmesh должны удовлетворить условию x0 < x1 < ... < xn, т.е. должны располагаться в порядке возрастания. Длина xmesh должна быть >= 3.
tspan – вектор [t0, t1, ..., tf] , задающий моменты времени, в которые решение PDE требуется для каждого значения в mesh (tspan – массив координат узлов одномерной сетки по временной координате t, см. уравнение (1.1)). Элементы tspan должны удовлетворить t0 < t1 < ... < tf, т.е. должны располагаться в порядке возрастания. Длина tspan должна быть >= 3.
options – некоторые параметры поддерживающего решателя ОДУ, вызываемого из pdepe: RelTol, AbsTol, NormControl, InitialStep, и MaxStep. В большинстве случаев, значения по умолчанию для этих параметров порождают удовлетворительные по точности решения. См. odeset для более детального ознакомления.
p1,p2,... – необязательные параметры, которые нужно передать к pdefun, icfun, и bcfun.

Описание:

sol = pdepe(m, pdefun, icfun, bcfun, xmesh, tspan) решает краевые задачи для систем параболических и эллиптических PDE, содержащих операции дифференцирования первого порядка по одной пространственной переменной и времени. Обыкновенные дифференциальные уравнения (ОДУ), следующие из дискретизации по пространственной координате, интегрируются, чтобы получить значения приближенного решения в моменты времени, точно установленные в tspan. Функция pdepe возвращает значения решения на сетке, заданной в xmesh.

pdepe решает PDE следующего вида:

(1.1)

PDE или система PDE решается для пространственно-временного интервала t0 <= t <= tf и a<=x<=b. Интервал [a, b] должен быть конечен. m может быть 0, 1, или 2, что соответствует плоской, цилиндрической, или сферической симметрии. Если m> 0, то a должно быть > = 0.

В уравнении 1.1 f(x, t, u, u/x) – функция “потока” и s(x, t, u, u/x) – функция источника. Частные производные по времени от компонентов искомой величины умножаются на диагональную матрицу c(x, t, u, u/x) (см. 1.1). Диагональные элементы этой матрицы являются или тождественно нулями или положительными значениями. Элемент, который является тождественно нулем, соответствует эллиптическому уравнению, иначе параболическому уравнению. Должно иметься по крайней мере одно параболическое уравнение во всей системе уравнений. Элемент с, который соответствует параболическому уравнению, может обращаться в нуль в изолированных значениях x, если эти значения x – узлы сетки. Разрывы распределения c и/или s в заданном интервале пространственных координат разрешаются при условии, что точка сетки представлена в каждом подинтервале.

Для t=t0 и всех значений x компоненты решения удовлетворяют начальным условиям вида

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

Для всех t, а также x=a или x=b компоненты решения удовлетворяют граничному условию вида

p(x,t,u)+q(x,t)× f(x, t, u, u/x) = 0 (1.3)

Элементы q должны быть тождественно равны нулю или ни при каких значениях x,t не быть равными нулю. Также, из этих двух коэффициентов, только p может зависеть от u.

При вызове функции sol = pdepe(m,pdefun,icfun,bcfun,xmesh,tspan):

  • m соответствует m;
  • xmesh(1) и xmesh(end) соответствуют a и b;
  • tspan(1) и tspan(end) соответствуют t0 и tf ;
  • pdefun вычисляет значения коэффициентов PDE c, f, и s (уравнение 1.1). Эта функция вызывается по форме [c,f,s] = pdefun(x,t,u,dudx)

Входные параметры – скаляры x и t, и векторы u и dudx, которые приблизительно соответствуют решению u и его частной производной по x, соответственно. c, f, и s - столбцовые матрицы. c хранит диагональные элементы матрицы c (уравнение 1.1).

  • icfun вычисляет начальные условия. Эта функция вызывается по форме
    u = icfun(x)

Когда вызывается с параметром x, icfun вычисляет и возвращает начальные значения компонентов решения в столбцовой матрице u.

  • bcfun вычисляет значения параметров p и q граничных условий (уравнение 1.3). Эта функция вызывается по форме [pl,ql,pr,qr] = bcfun(xl,ul,xr,ur,t)

ul - приближенное решение в границе левой стороны xl =a, и ur - приближенное решение в правой границе xr = b. pl и ql – столбцовые матрицы, соответствующие p и q, вычисленному в xl, аналогично pr и qr соответствуют xr. Когда m> 0 и a=0, ограниченность решения (т.е. конечное значение решения) около x=0 требует, чтобы поток f обратился в нуль в x=0. pdepe налагает это граничное условие автоматически и тем самым игнорирует значения, возвращенные в pl и ql.

pdepe возвращает решение в многомерный массив sol. ui=ui=sol(:,:,i) является приближением к i-му компоненту вектора решения u. Элемент ui(j,k)=sol(j,k,i) является приближением ui при (t,x) = (tspan(j),xmesh(k)).

ui = sol(j,:,i) содержит i-й компонент решения в момент времени tspan(j) и узлах сетки xmesh(:). Нужно использовать pdeval для приближённого вычисления частной производной dui/dx в точках, не перечисленных в xmesh. См. также pdeval.

sol = pdepe(m,pdefun,icfun,bcfun,xmesh,tspan,options, p1, p2, …) передаёт дополнительно параметры p1, p2, ... функциям pdefun, icfun, bcfun. В этом случае функции pdefun, icfun, bcfun могут быть оформлены в виде [c,f,s] = pdefun(x,t,u,dudx,p1,p2,…), u = icfun(x,p1,p2,…), [pl,ql,pr,qr] = bcfun(xl,ul,xr,ur,t,p1,p2,…). Можно задать options=[], если параметры режима устанавливать не нужно (см. odeset для более детального ознакомления).

Замечания:

Массивы xmesh и tspan играют различные роли в pdepe.

tspan : функция pdepe выполняет интегрирование по времени с решателем ОДУ, которое выбирает и шаг по времени, и формулу динамически. Элементы tspan просто определяют, в какие моменты времени нужно получить решение, и погрешность слабо зависит от длины tspan.

xmesh : аппроксимации второго порядка к решению сделаны на сетке, точно установленной в mesh. Вообще, лучше использовать близко расположенные узлы (точки) сетки, где решение изменяется быстро. pdepe не выбирает сетку автоматически. Нужно задавать соответствующую фиксированную сетку в xmesh. Погрешность зависит строго от длины xmesh. Когда m>0, нет необходимости использовать мелкую сетку около x=0, чтобы правильно смоделировать особенность решения вблизи этой точки.

Интегрирование времени сделано с ode15s. pdepe эксплуатирует возможности ode15s для решения дифференциально-алгебраических уравнений, которые возникают, когда система уравнений 1.1 содержит эллиптические уравнения, и для обработки якобианов с точно установленной моделью разреженности.

В результате дискретизации эллиптические уравнения преобразуются в алгебраические уравнения. Если элементы вектора начальных условий, которые соответствуют эллиптическим уравнениям, не "непротиворечивы" с дискретизацией, pdepe пробует корректировать их перед началом времени интегрирования. По этой причине решение, возвращенное в течение начального времени, может иметь погрешность дискретизации сопоставимой этому в любое другое время. Если сетка достаточно мелкая, то pdepe может находить непротиворечивые начальные условия близко к данным. Если pdepe выдаёт сообщение, что имеются затруднения найти непротиворечивые начальные условия, то производится попытка усовершенствовать сетку.

Никакая корректировка не является необходимой для элементов вектора начальных условий, которые соответствуют параболическим уравнениям.

См. также function_handle, pdeval, ode15s, odeset, odeget.

pdeval

Интерполяция численного решения PDE и его частной производной первого порядка по пространственной координате с использованием выходных данных функции pdepe

Синтаксис:

[uout,duoutdx] = pdeval(m,xmesh,ui,xout)

Параметры:

m – cимметрия проблемы: плоская = 0, цилиндрическая = 1, сферическая = 2. Это - первый входной параметр, использованный при вызове функции pdepe.

xmesh – матрица-строка [x0, x1, ..., xn] , определяющая точки, в которых элементы ui были вычислены функцией pdepe. Это - тот же самый вектор, с которым pdepe был вызван.

ui – матрица-строка sol(j,:, i) , которая аппроксимирует i-й компонент решения во время tj на сетке в точках xmesh, где sol - решение, возвращенное функцией pdepe.

xout – матрица-строка точек на интервале [x0, xn], в котором требуется найти интерполируемое решение.

Описание:

[uout, duoutdx] = pdeval (m, x, ui, xout) аппроксимирует решение ui и его частную производную
ui /x в точках на интервале [x0, xn]. Функция pdeval возвращает вычисленные значения в uout и duoutdx соответственно.

Замечание. pdeval оценивает частную производную ui /x скорее, чем поток f (см. описание функции pdepe, уравнение (1.1)). Хотя поток f непрерывен, частная производная ui /x может терпеть разрыв первого рода при переходе через раздел материальных сред.

Примечание. Расшифровка использованных здесь обозначений дана в pdepe.

См. также pdepe


Поиск по сайту:

Система Orphus

Яндекс.Метрика