specifyCoefficients
В этом разделе описывается, как записать коэффициент f
в уравнении
или в аналогичных уравнениях. Вопрос в том, как записать коэффициент f
для включения в модель PDE через specifyCoefficients
.
N количество уравнений, см. Уравнения, которые вы можете решить используя PDE Toolbox. Дайте 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 - координаты точек, для которых ваша функция вычисляет значения коэффициентов. The subdomain
поле представляет числа поддоменов, которые в настоящее время применяются только к 2-D моделям. Поля местоположения являются векторами-строками.
state
- структура с этими полями:
state.u
state.ux
state.uy
state.uz
state.time
The state.u
поле представляет текущее значение u решения. The state.ux
, state.uy
, и state.uz
области - оценки частных производных решения ( <reservedrangesplaceholder8> / <reservedrangesplaceholder7>, <reservedrangesplaceholder6> / <reservedrangesplaceholder5> и <reservedrangesplaceholder4> / <reservedrangesplaceholder3>) в соответствующих точках структуры местоположения. Решения и оценки градиента являются N -by Nr матрицами. The 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);
Это представляет функцию коэффициента