Я розмістив те саме питання на центральній службі MATLAB , і Білл Грін люб’язно дав відповідь .
Я коротко повідомляю і поширюю це, щоб воно могло бути корисним іншим.
Рішення Білла:
Ось один із способів створити такий сюжет. Припустимо, у вас є точкова матриця, створена сіткою 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
яка виробляє вузол багатозначних-функцію з центру багатозначних-функцій .