Zadałem to samo pytanie w centrali MATLAB , a Bill Greene uprzejmie udzielił odpowiedzi .
Krótko to raportuję i rozszerzam, aby przydał się innym.
Rozwiązanie Billa:
Oto jeden ze sposobów stworzenia takiej fabuły. Załóżmy, że macierz punktów utworzono za pomocą siatki PDE Toolbox p oraz wektora rozwiązania u. Poniższa funkcja utworzy wykres tego rozwiązania wzdłuż linii zdefiniowanej przez lokalizacje xiy dwóch punktów końcowych. Mój przykład dotyczy rozwiązania na kwadracie jednostkowym i chcę wykres wzdłuż linii (0, .5) do (1, .5). Chcę zawrzeć 25 punktów w fabule. Jak widać, prawdziwa praca jest wykonywana przez TriScatteredInterp
funkcję z podstawowego MATLAB-a.
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
Chciałbym ponadto zauważyć, że poprzednia funkcja umożliwia wykreślenie rozwiązania u
lub jego funkcji f(u)
, pod warunkiem, że u
jest zdefiniowana w węzłach siatki (jak to zwykle bywa w przypadku rozwiązań przybliżonych MES).
Jeśli trzeba wykreślić sekcje funkcji zdefiniowanych na środkach siatki (np. Funkcje grad u
), może ona z góry użyć funkcji, pdeprtni
która wytwarza funkcje o wartościach węzłowych z funkcji o wartościach środkowych .