ЭТОТ ПЭЙДЖ ОПИСЫВАЕТ УСТАРЕВШИЙ РАБОЧИЙ ПРОЦЕСС. Новые возможности не могут быть совместимы с устаревшим рабочим процессом. Для соответствующего шага в рекомендуемом рабочем процессе смотрите рекомендуемые примеры на странице PDE Coefficients.
Обычно, самый простой способ дать коэффициенты как результат программы состоит в том, чтобы использовать символьное выражение. Для этого подхода смотрите, Задают Скалярные Коэффициенты УЧП в символьной Форме. Для более подробного управления коэффициентами, тем не менее, можно написать коэффициенты в функциональной форме.
Коэффициент в функциональной форме для 3-D геометрии использует этот синтаксис:
coeff = myfun(location,state)
coeff представляет любой коэффициент: c, a, f или d. Решатели Partial Differential Equation Toolbox™ передают location и данные state к вашей функции.
location является структурой с этими полями:
location.x
location.y
location.z
Поля представляют x - y - и z - координаты точек, для которых ваша функция вычисляет содействующие значения. Поля местоположения являются векторами - строками.
state является структурой с этими полями:
state.u
state.ux
state.uy
state.uz
state.t
Поле state.u представляет текущее значение решения u. state.ux, state.uy и поля state.uz являются оценками частных производных решения (∂u / ∂ x, ∂u / ∂ y и ∂u / ∂ z) в соответствующих точках структуры местоположения. Решение и оценки градиента являются векторами - строками. Поле state.t является скалярным временем представления для решателей hyperbolic и parabolic.
coeff вывод вашей функции является NC-by-M матрица, где
NC является длиной содействующего вектор-столбца.
f NC совпадает с количеством уравнений, N.
a или d — NC может быть 1, N, N(N+1)/2 или N 2 (см. a или d Коэффициент для Систем).
c NC может иметь много различных значений в области значений 1 к 9N2 (см. c Коэффициент для Систем).
M является длиной любого из полей location. Это - также длина полей state.u.
Ваша функция должна вычислить векторизованным способом. Другими словами, это должно возвратить матрицу значений для каждой точки в location. Например, в N = 1 проблема, где коэффициент f равняется 1 + x 2, одна возможная функция:
function fcoeff = ffunction(location,state)
fcoeff = 1 + location.x.^2;Чтобы передать этот коэффициент решателю parabolic, установите коэффициент на @ffunction. Например:
f = @ffunction;
% Assume the other inputs are defined
u = parabolic(u0,tlist,model,c,a,f,d);Если вам нужно постоянное значение, используйте размер location.x как количество столбцов матрицы. Для N = 3 проблемы:
function fcoeff = ffunction(location,state)
fcoeff = ones(3,length(location.x));