2-D графики решений и градиентов с функциями MATLAB ®

Можно интерполировать решение и, при необходимости, его градиент отдельными шагами, а затем построить график результатов с помощью функций MATLAB ®, таких как surf, mesh, quiverи так далее. Для примера решите ту же скаляр эллиптическую задачу -Δu=1 на L-образной мембране с нулевыми граничными условиями Дирихле. Интерполируйте решение и его градиент, а затем постройте график результатов.

Создайте модель PDE, 2-D геометрию и mesh. Задайте граничные условия и коэффициенты. Решите УЧП задачу.

model = createpde;
geometryFromEdges(model,@lshapeg);
applyBoundaryCondition(model,'dirichlet','edge',1:model.Geometry.NumEdges,'u',0);
c = 1;
a = 0;
f = 1;
specifyCoefficients(model,'m',0,'d',0,'c',c,'a',a,'f',f);
generateMesh(model,'Hmax',0.05);
results = solvepde(model);

Интерполируйте решение и его градиенты в плотную сетку от -1 до 1 в каждом направлении.

v = linspace(-1,1,101);
[X,Y] = meshgrid(v);
querypoints = [X(:),Y(:)]';
uintrp = interpolateSolution(results,querypoints);

Постройте график получившегося решения на mesh.

uintrp = reshape(uintrp,size(X));
mesh(X,Y,uintrp)
xlabel('x')
ylabel('y')

Figure contains an axes. The axes contains an object of type surface.

Интерполируйте градиенты решения в сетку от -1 до 1 в каждом направлении. Постройте график результата с помощью quiver.

[gradx,grady] = evaluateGradient(results,querypoints);
figure
quiver(X(:),Y(:),gradx,grady)
xlabel('x')
ylabel('y')

Изменение масштаба для получения дополнительной информации. Для примера ограничьте область значений [-0.2,0.2] в каждом направлении.

axis([-0.2 0.2 -0.2 0.2])

Figure contains an axes. The axes contains an object of type quiver.

Постройте график решения и градиентов в одной области значений.

figure
h1 = meshc(X,Y,uintrp);
set(h1,'FaceColor','g','EdgeColor','b')
xlabel('x')
ylabel('y')
alpha(0.5)
hold on

Z = -0.05*ones(size(X));
gradz = zeros(size(gradx));

h2 = quiver3(X(:),Y(:),Z(:),gradx,grady,gradz);
set(h2,'Color','r')
axis([-0.2,0.2,-0.2,0.2])

Figure contains an axes. The axes contains 3 objects of type surface, contour, quiver.

Срез графика решения вдоль линии x = y.

figure
mesh(X,Y,uintrp)
xlabel('x')
ylabel('y')
alpha(0.25)
hold on

z = linspace(0,0.15,101);
Z = meshgrid(z);
surf(X,X,Z')

view([-20 -45 15])
colormap winter

Figure contains an axes. The axes contains 2 objects of type surface.

Постройте график интерполированного решения вдоль линии.

figure
xq = v;
yq = v;
uintrp = interpolateSolution(results,xq,yq);

plot3(xq,yq,uintrp)
grid on
xlabel('x')
ylabel('y')

Интерполируйте градиенты решения вдоль той же линии и добавьте их к графику решения.

[gradx,grady] = evaluateGradient(results,xq,yq);

gradx = reshape(gradx,size(xq));
grady = reshape(grady,size(yq));

hold on
quiver(xq,yq,gradx,grady)
view([-20 -45 75])

Figure contains an axes. The axes contains 2 objects of type line, quiver.

Для просмотра документации необходимо авторизоваться на сайте