Publiqué la misma pregunta en MATLAB central , y Bill Greene amablemente proporcionó una respuesta .
Lo informo brevemente y lo extiendo para que pueda ser útil para otros.
Solución de Bill:
Aquí hay una forma de crear tal trama. Suponga que tiene la matriz de puntos creada por PDE Toolbox Mesher, p, y un vector de solución, u. La siguiente función creará un gráfico de esa solución a lo largo de una línea definida por las ubicaciones x e y de los dos puntos finales. Mi ejemplo es para una solución en un cuadrado unitario y quiero un gráfico a lo largo de la línea (0, .5) a (1, .5). Quiero incluir 25 puntos en la trama. Como puede ver, la TriScatteredInterp
función del núcleo de MATLAB está haciendo el trabajo real .
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
Me gustaría comentar que la función anterior le permite a uno trazar la solución u
o sus funciones f(u)
, siempre que u
esté definida en los nodos de malla (como suele suceder con las soluciones aproximadas de FEM).
Si uno necesita trazar secciones de funciones definidas en centros de malla (por ejemplo, funciones de grad u
), puede usar de antemano la función pdeprtni
que produce funciones con valores de nodo a partir de funciones con valores de centro .