specifyCoefficientsВ этом разделе описывается, как записать коэффициент f в уравнении
+au=f
или в аналогичных уравнениях. Вопрос в том, как написать коэффициент f для включения в модель PDE через specifyCoefficients.
N - количество уравнений, см. раздел Уравнения, которые можно решить с помощью панели инструментов PDE. Дать f как одно из следующих:
Если f константа, дать вектор столбца с N компонентами. Например, если N = 3, f может быть:
f = [3;4;10];
Если f не является постоянной, задайте дескриптор функции. Функция должна иметь вид
fcoeffunction(location,state)
solvepde проходит location и state структуры в fcoeffunction. Функция должна возвращать матрицу размера N-by-Nr, где Nr - количество точек в местоположении, solvepde проходит. Nr равна длине location.x или любой другой location поле. Функция должна оценивать f в этих точках.
Передать коэффициент в specifyCoefficients как дескриптор функции, например,
specifyCoefficients(model,'f',@fcoeffunction,...)
location - структура со следующими полями:
location.x
location.y
location.z
location.subdomain
Области x, y, и z представляют координаты x, y и z точек, для которых функция вычисляет значения коэффициентов. subdomain поле представляет номера поддоменов, которые в настоящее время применяются только к 2-D моделям. Поля местоположения являются векторами строк.
state - структура со следующими полями:
state.u
state.ux
state.uy
state.uz
state.time
state.u поле представляет текущее значение решения u. state.ux, state.uy, и state.uz поля представляют собой оценки частных производных решения (∂u/∂x, ∂u/∂y и ∂u/∂z) в соответствующих точках структуры местоположения. Оценки решения и градиента представляют собой матрицы N-по-Nr. state.time поле - скаляр, представляющий время для зависящих от времени моделей.
Например, если N = 3, f может быть:
function f = fcoeffunction(location,state) N = 3; % Number of equations nr = length(location.x); % Number of columns f = zeros(N,nr); % Allocate f % Now the particular functional form of f f(1,:) = location.x - location.y + state.u(1,:); f(2,:) = 1 + tanh(state.ux(1,:)) + tanh(state.uy(3,:)); f(3,:) = (5 + state.u(3,:)).*sqrt(location.x.^2 + location.y.^2);
Это представляет функцию коэффициента
)/ ∂y) (5 + u (3)) x2 + y2]