specifyCoefficients
В этом разделе описывается, как записать m, d или коэффициенты в систему уравнений
или в системе собственных значений
Тема относится к рекомендуемому рабочему процессу для включения коэффициентов в вашу модель с помощью specifyCoefficients
.
Если в системе N уравнения, то эти коэффициенты представляют N -by - N матрицы.
Для матриц постоянных (числовых) коэффициентов представьте каждый коэффициент, используя вектор-столбец с N2 компоненты. Этот вектор-столбец представляет, для примера, m(:)
.
Для неконстантных матриц коэффициентов см. «Неконстантные m, d или a».
Примечание
The d
коэффициент принимает специальную матричную форму, когда m
является ненулевым. См. D Коэффициент, Когда m является Ненулевым.
Иногда ваши m, d или матрицы диагональны или симметричны. В этих случаях можно представлять m, d или a, используя меньший вектор, чем один с N2 компоненты. В следующих разделах приведены возможности.
Программа интерпретирует скаляр m, d или a как диагональ матрицу.
Программа интерпретирует вектор-столбец N-элемента m, d или a как диагональную матрицу.
Программа интерпретирует N (N + 1 )/2-элемент вектора-столбца m, d или a как симметричную матрицу. На следующей схеме • означает, что запись симметрична.
Коэффициент a (i, j) находится в строке (j (j -1 )/2 + i) вектора a
.
Программное обеспечение интерпретирует N2-элементный вектор-столбец m, d или a как матрица.
Коэффициент a (i, j) находится в строке (N (j -1) + i) вектора a
.
Примечание
Если и m, и d ненулевые, то d должно быть постоянным скаляром или вектором, а не функцией.
Если любой из m, d или коэффициентов не является постоянным, представьте его как функцию от вида
dcoeffunction(location,state)
solvepde
или solvepdeeig
передайте location
и state
структуры, для dcoeffunction
. Функция должна вернуть матрицу размера N 1-by- Nr, где:
N 1 является длиной вектора, представляющего коэффициент. Существует несколько возможных значений N 1, детализированных в Short m, d или векторах. 1 <reservedrangesplaceholder1> 1 <reservedrangesplaceholder0> 2.
Nr - число точек в местоположении, которое проходит решатель. Nr равно длине location.x
или любой другой location
поле. Функция должна вычислять m, d или a в этих точках.
Передайте коэффициент в specifyCoefficients
как указатель на функцию, такой как
specifyCoefficients(model,'d',@dcoeffunction,...)
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, и у вас есть 2-D геометрия. Предположим, что вы 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,...