ЭТОТ ПЭЙДЖ ОПИСЫВАЕТ УСТАРЕВШИЙ РАБОЧИЙ ПРОЦЕСС. Новые возможности не могут быть совместимы с устаревшим рабочим процессом. Для соответствующего шага в рекомендуемом рабочем процессе см. f Коэффициент для specifyCoefficients.
В этом разделе описывается написать коэффициенту f в уравнении
или в подобных уравнениях. Количество строк в f указывает, что N, количество уравнений, видит уравнения, которые Можно Решить Используя Устаревшие Функции. Дайте f как любое следующее:
Вектор-столбец с компонентами N. Например, если N = 3, f мог бы быть:
f = [3;4;10];
Символьный массив со строками N. Строки символьного массива являются выражениями MATLAB®, как описано в, Задают Скалярные Коэффициенты УЧП в символьной Форме, с дополнительными опциями для нелинейных уравнений. Дополнительные опции:
Представляйте i th компонент решения u с помощью 'u(i)'.
Точно так же представляйте i th компоненты градиентов решения u с помощью 'ux(i)', 'uy(i)' и 'uz(i)'.
Заполните строки пробелами, таким образом, каждая строка имеет то же количество символов (char делает это автоматически). Например, если N = 3, f мог бы быть:
f = char('sin(x)+cos(y)', ... 'cosh(x.*y)*(1+u(1).^2)', ... 'x.*y./(1+x.^2+y.^2)')
f = sin(x) + cos(y) cosh(x.*y)*(1 + u(1).^2) x.*y./(1 + x.^2 + y.^2)
Для 2D геометрии функция, как описано в Задает 2D Скалярные Коэффициенты в Функциональной Форме. Функция должна возвратить матрицу размера N-by-Nt, где Nt является количеством треугольников в mesh. Функция должна оценить f в треугольных центроидах, когда в Задают 2D Скалярные Коэффициенты в Функциональной Форме. Дайте решателям имя функции как , или как указатель на функцию @'filename'filename, где filename.m является файлом на вашем пути MATLAB. Для получения дополнительной информации при записи функции, смотрите, Вычисляют Коэффициенты в Функциональной Форме.
Например, если N = 3, f мог бы быть:
function f = fcoeffunction(p,t,u,time) N = 3; % Number of equations % Triangle point indices it1 = t(1,:); it2 = t(2,:); it3 = t(3,:); % Find centroids of triangles xpts = (p(1,it1) + p(1,it2) + p(1,it3))/3; ypts = (p(2,it1) + p(2,it2) + p(2,it3))/3; [ux,uy] = pdegrad(p,t,u); % Approximate derivatives uintrp = pdeintrp(p,t,u); % Interpolated values at centroids nt = size(t,2); % Number of columns f = zeros(N,nt); % Allocate f % Now the particular functional form of f f(1,:) = xpts - ypts + uintrp(1,:); f(2,:) = 1 + tanh(ux(1,:)) + tanh(uy(3,:)); f(3,:) = (5 + uintrp(3,:)).*sqrt(xpts.^2 + ypts.^2);
Поскольку эта функция зависит от решения u, если уравнение является эллиптическим, используйте решатель pdenonlin. Начальным значением может быть весь 0 s в случае граничных условий Дирихле:
np = size(p,2); % number of points u0 = zeros(N*np,1); % initial guess
Для 3-D геометрии функция, как описано в Задает 3-D Коэффициенты УЧП в Функциональной Форме. Функция должна возвратить матрицу размера N-by-Nr, где Nr является числом точек в области, которую передает решатель. Функция должна оценить f в этих точках. Дайте решателям функцию как указатель на функцию @filename, где filename.m является файлом на вашем пути MATLAB или является анонимной функцией.
Это не надежно, чтобы задать f как скаляр или один вектор символов. Иногда тулбокс может расширить один вход до вектора или символьного массива с N идентичные строки. Но можно получить ошибку, когда тулбоксу не удается определить N. Вместо скаляра или одного вектора символов, для надежности задают f как вектор-столбец или символьный массив со строками N.