Postei a mesma pergunta na central do MATLAB , e Bill Greene gentilmente forneceu uma resposta .
Eu relato e estendo brevemente para que possa ser útil para outras pessoas.
Solução de Bill:
Aqui está uma maneira de criar esse enredo. Suponha que você tenha a matriz de pontos criada pelo mesher PDE Toolbox, pe um vetor de solução, u. A função abaixo criará um gráfico dessa solução ao longo de uma linha definida pelos locais x e y dos dois pontos finais. Meu exemplo é para uma solução em um quadrado de unidade e quero um gráfico ao longo da linha (0, 0,5) a (1, 0,5). Eu quero incluir 25 pontos no enredo. Como você pode ver, o trabalho real está sendo realizado pela TriScatteredInterp
função do núcleo 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
Gostaria de observar ainda que a função anterior permite plotar a solução u
ou suas funções f(u)
, desde que u
definida em nós de malha (como normalmente acontece para soluções aproximadas do FEM).
Se for necessário plotar seções de funções definidas em centros de malha (por exemplo, funções de grad u
), ela poderá usar antecipadamente a função pdeprtni
que produz funções com valor de nó a partir de funções com valor central .