exponenta event banner

f Коэффициент для Систем

Примечание

ЭТОТ ПЭЙДЖ ОПИСЫВАЕТ УСТАРЕВШИЙ РАБОЧИЙ ПРОЦЕСС. Новые возможности не могут быть совместимы с устаревшим рабочим процессом. Для соответствующего шага в рекомендуемом рабочем процессе см. f Коэффициент для specifyCoefficients.

В этом разделе описывается написать коэффициенту f в уравнении

(cu)+au=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.