Этот пример показывает, как решить минимальное поверхностное уравнение
на единичном диске , с на контуре .
Этот пример использует программируемый рабочий процесс. Для прикладного решения PDE Modeler смотрите Минимальную Поверхностную проблему: Приложение PDE Modeler.
Эллиптическое уравнение в форме тулбокса
Поэтому для минимальной поверхностной проблемы, коэффициенты следующие:
Поскольку коэффициент функция решения , минимальной поверхностной проблемой является нелинейная эллиптическая проблема.
Чтобы решить минимальную поверхностную проблему с помощью программируемого рабочего процесса, сначала создайте модель PDE с одной зависимой переменной.
numberOfPDE = 1; model = createpde(numberOfPDE);
Создайте геометрию и включайте ее в модель. Функция circleg
представляет эту геометрию.
geometryFromEdges(model,@circleg);
Постройте геометрию, отображающую метки ребра.
pdegplot(model,'EdgeLabels','on'); axis equal title 'Geometry with Edge Labels';
Задайте коэффициенты.
a = 0; f = 0; cCoef = @(region,state) 1./sqrt(1+state.ux.^2 + state.uy.^2); specifyCoefficients(model,'m',0,'d',0,'c',cCoef,'a',a,'f',f);
Задайте граничные условия с помощью функции .
bcMatrix = @(region,~)region.x.^2; applyBoundaryCondition(model,'dirichlet',... 'Edge',1:model.Geometry.NumEdges,... 'u',bcMatrix);
Сгенерируйте mesh.
generateMesh(model,'Hmax',0.1); figure; pdemesh(model); axis equal
Решите проблему при помощи функции solvepde
. Поскольку проблема нелинейна, solvepde
вызывает нелинейный решатель. Наблюдайте прогресс решателя путем установки свойства SolverOptions.ReportStatistics
модели к 'on'
.
model.SolverOptions.ReportStatistics = 'on';
result = solvepde(model);
Iteration Residual Step size Jacobian: Full 0 1.8540e-02 1 2.8715e-04 1.0000000 2 1.2145e-06 1.0000000
u = result.NodalSolution;
Постройте решение.
figure; pdeplot(model,'XYData',u,'ZData',u); xlabel 'x' ylabel 'y' zlabel 'u(x,y)' title 'Minimal Surface'