Matlab Pde Toolbox: построение решения на линии или на подмногообразии

9

Я использую набор инструментов Matlab pde для решения определенного эллиптического уравнения в 2D.

Решение в порядке, хотя мне нужно построить его вдоль заданной линии, т.е. вырезать плоский срез из трехмерной сетки, представляющей решение.

Я не могу придумать, как разумно задействовать функции панели инструментов (т.е. не задействовать низкоуровневую интерполяцию на треугольной сетке).

Любая помощь приветствуется.

Acorbe
источник

Ответы:

3

Я разместил тот же вопрос на MATLAB central , и Билл Грин любезно предоставил ответ .

Я кратко сообщаю и расширяю его, чтобы он мог быть полезен другим.

Решение от Билла:

Вот один из способов создать такой сюжет. Предположим, у вас есть матрица точек, созданная сеткой PDE Toolbox, p, и вектором решения u. Функция ниже создаст график этого решения вдоль линии, определенной местоположениями x и y двух конечных точек. Мой пример для решения на единицу площади, и я хочу график вдоль линии (0, .5) до (1, .5). Я хочу включить 25 пунктов в сюжет. Как видите, настоящую работу выполняет TriScatteredInterpфункция ядра MATLAB.

plotAlongLine(p, u, [0,.5], [1,.5], 25);

function plotAlongLine(p, u, xy1, xy2, numpts)
    x = linspace(xy1(1),xy2(1),numpts);
    y = linspace(xy1(2),xy2(2),numpts);
    F = TriScatteredInterp(p(1,:)', p(2,:)', u);
    uxy = F(x,y);
    figure; plot(x, uxy);  //REM: x is chosen here as a curvilinear coordinate
end

Я хотел бы далее отметить, что предыдущая функция позволяет построить решение uили его функции f(u), если они uопределены на узлах сетки (как это обычно происходит для приближенных решений FEM).

Если нужно сюжетные разделы функций , определенных на сетчатых центрах (например , функции grad u), она может использовать заранее функцию , pdeprtniкоторая производит узел многозначных-функцию из центра многозначных-функций .

Acorbe
источник