specifyCoefficients
В этом разделе описывается записать m, d, или коэффициенты в системе уравнений
или в системе собственного значения
Тема применяется к рекомендуемому рабочему процессу за включение коэффициентов в вашей модели с помощью specifyCoefficients
.
Если существуют уравнения N в системе, то эти коэффициенты представляют N-by-N матрицы.
Для постоянных (числовых) содействующих матриц представляйте каждый коэффициент с помощью вектор-столбца с N 2 компонента. Этот вектор-столбец представляет, например, m(:)
.
Для непостоянных содействующих матриц смотрите Непостоянный m, d, или a.
Коэффициент d
принимает специальную матричную форму, когда m
является ненулевым. См. d Коэффициент, Когда m будет Ненулевым.
Иногда, ваши m, d, или матрицы являются диагональными или симметричными. В этих случаях можно представлять m, d, или использование меньшего вектора, чем один с N 2 компонента. Следующие разделы дают возможности.
Программное обеспечение интерпретирует скаляр m, d, или как диагональная матрица.
Программное обеспечение интерпретирует N - вектор-столбец элемента m, d, или как диагональная матрица.
Программное обеспечение интерпретирует N (N +1)/2-element вектор-столбец m, d, или как симметрическая матрица. В следующей схеме, • означает, что запись симметрична.
Коэффициент a (i, j) последовательно (j (j –1)/2+i) векторного a
.
Программное обеспечение интерпретирует N вектор-столбец с 2 элементами m, d, или как матрица.
Коэффициент a (i, j) последовательно (N (j –1) +i) векторного a
.
Если и m и d являются ненулевыми, то d должен быть постоянным скаляром или вектором, не функцией.
Если какой-либо из m, d, или коэффициенты не являются постоянными, представляйте его как функцию формы
dcoeffunction(location,state)
solvepde
или solvepdeeig
передают location
и структуры state
к dcoeffunction
. Функция должна возвратить матрицу размера N 1 Nr, где:
N 1 является длиной вектора, представляющего коэффициент. Существует несколько возможных значений N 1, подробные в коротком m, d, или векторы. 1 ≤ N 1 ≤ N 2.
Nr является числом точек в месте, которое передает решатель. Nr равен длине location.x
или любого другого поля location
. Функция должна оценить m, d, или в этих точках.
Передайте коэффициент specifyCoefficients
как указатель на функцию, такой как
specifyCoefficients(model,'d',@dcoeffunction,...)
location
является структурой с этими полями:
location.x
location.y
location.z
location.subdomain
Поля x
, y
и z
представляют x - y - и z - координаты точек, для которых ваша функция вычисляет содействующие значения. Поле subdomain
представляет числа субдомена, которые в настоящее время применяются только к 2D моделям. Поля местоположения являются векторами - строками.
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-by-Nr матрицы. Поле state.time
является скалярным временем представления для зависящих от времени моделей.
Например, предположите N = 3, и у вас есть 2D геометрия. Предположим, что ваша матрица d
имеет форму
где s 1 (x, y) 5 в субдомене 1 и 10 в субдомене 2.
Этот d
является симметрической матрицей. Таким образом, естественно представлять d
как N (N+1)/2-Element Вектор-столбец m, d, или a:
Для той формы следующая функция является соответствующей.
function dmatrix = dcoeffunction(location,state)
n1 = 6;
nr = numel(location.x);
dmatrix = zeros(n1,nr);
dmatrix(1,:) = ones(1,nr);
dmatrix(2,:) = 5*location.subdomain;
dmatrix(3,:) = 4*ones(1,nr);
dmatrix(4,:) = sqrt(location.x.^2 + location.y.^2);
dmatrix(5,:) = -ones(1,nr);
dmatrix(6,:) = 9*ones(1,nr);
Чтобы включать эту функцию как ваш коэффициент d
, передайте указатель на функцию @dcoeffunction
:
specifyCoefficients(model,'d',@dcoeffunction,...