(Не рекомендуемый), Решают параболическую задачу УЧП
parabolic не рекомендуется. Использование solvepde вместо этого.
Параболический решатель уравнения
Решает задачи УЧП типа
на 2D или 3-D области Ω, или системная проблема УЧП
Переменные c, a, f и d могут зависеть от положения, время и решение u и его градиент.
производит решение формулировки FEM скалярной проблемы УЧПu = parabolic(u0,tlist,model,c,a,f,d)
на 2D или 3-D области Ω, или системная проблема УЧП
с геометрией mesh и граничные условия заданы в model, и с начальным значением u0. Переменные c, a, f и d в уравнении соответствуют функциональным коэффициентам cAF, и d соответственно.
, для любого из предыдущих входных параметров, выключает отображение внутренней статистики решателя ОДУ во время процесса решения.u = parabolic(___,'Stats','off')
Решите параболическое уравнение
на квадратной области, заданной squareg.
Создайте модель PDE и импортируйте геометрию.
model = createpde; geometryFromEdges(model,@squareg); pdegplot(model,'EdgeLabels','on') ylim([-1.1,1.1]) axis equal

Установите граничные условия Дирихле на всех ребрах.
applyBoundaryCondition(model,'dirichlet',... 'Edge',1:model.Geometry.NumEdges, ... 'u',0);
Сгенерируйте относительно мелкую сетку.
generateMesh(model,'Hmax',0.02,'GeometricOrder','linear');
Установите начальное условие, чтобы иметь на диске и в другом месте.
p = model.Mesh.Nodes; u0 = zeros(size(p,2),1); ix = find(sqrt(p(1,:).^2 + p(2,:).^2) <= 0.4); u0(ix) = ones(size(ix));
Установите времена решения быть от 0 до 0,1 с размером шага 0.005.
tlist = linspace(0,0.1,21);
Создайте коэффициенты УЧП.
c = 1; a = 0; f = 0; d = 1;
Решите УЧП.
u = parabolic(u0,tlist,model,c,a,f,d);
133 successful steps 0 failed attempts 268 function evaluations 1 partial derivatives 26 LU decompositions 267 solutions of linear systems
Постройте начальное условие, решение в итоговое время и два промежуточных решения.
figure subplot(2,2,1) pdeplot(model,'XYData',u(:,1)); axis equal title('t = 0') subplot(2,2,2) pdeplot(model,'XYData',u(:,5)) axis equal title('t = 0.02') subplot(2,2,3) pdeplot(model,'XYData',u(:,11)) axis equal title('t = 0.05') subplot(2,2,4) pdeplot(model,'XYData',u(:,end)) axis equal title('t = 0.1')

Решите параболическое уравнение
на квадратной области, заданной squareg, использование геометрии функционирует, чтобы задать геометрию, граничная функция, чтобы задать граничные условия, и с помощью initmesh создать mesh конечного элемента.
Задайте геометрию как @squareg и постройте геометрию.
g = @squareg; pdegplot(g,'EdgeLabels','on') ylim([-1.1,1.1]) axis equal

Установите граничные условия Дирихле на всех ребрах. squareb1 функция задает эти граничные условия.
b = @squareb1;
Сгенерируйте относительно мелкую сетку.
[p,e,t] = initmesh(g,'Hmax',0.02);Установите начальное условие, чтобы иметь на диске и в другом месте.
u0 = zeros(size(p,2),1); ix = find(sqrt(p(1,:).^2 + p(2,:).^2) <= 0.4); u0(ix) = ones(size(ix));
Установите времена решения быть от 0 до 0,1 с размером шага 0.005.
tlist = linspace(0,0.1,21);
Создайте коэффициенты УЧП.
c = 1; a = 0; f = 0; d = 1;
Решите УЧП.
u = parabolic(u0,tlist,b,p,e,t,c,a,f,d);
147 successful steps 0 failed attempts 296 function evaluations 1 partial derivatives 28 LU decompositions 295 solutions of linear systems
Постройте начальное условие, решение в итоговое время и два промежуточных решения.
figure subplot(2,2,1) pdeplot(p,e,t,'XYData',u(:,1)); axis equal title('t = 0') subplot(2,2,2) pdeplot(p,e,t,'XYData',u(:,5)) axis equal title('t = 0.02') subplot(2,2,3) pdeplot(p,e,t,'XYData',u(:,11)) axis equal title('t = 0.05') subplot(2,2,4) pdeplot(p,e,t,'XYData',u(:,end)) axis equal title('t = 0.1')

Создайте матрицы конечного элемента, которые кодируют параболическую проблему и решают задачу.
Проблемой является эволюция температуры в блоке проведения. Блок является прямоугольной плитой.
model = createpde(1); importGeometry(model,'Block.stl'); handl = pdegplot(model,'FaceLabels','on'); view(-42,24) handl(1).FaceAlpha = 0.5;

Поверхности 1, 4, и 6 из плиты сохранены в 0 градусах. Другие поверхности изолируются. Включайте граничное условие на поверхностях 1, 4, и 6. Вы не должны включать граничное условие на других поверхностях, потому что условие по умолчанию изолируется.
applyBoundaryCondition(model,'dirichlet','Face',[1,4,6],'u',0);
Начальное температурное распределение в блоке имеет форму
generateMesh(model); p = model.Mesh.Nodes; x = p(1,:); y = p(2,:); z = p(3,:); u0 = x.*y.*z*1e-3;
Параболическое уравнение в синтаксисе тулбокса
Предположим, что теплопроводность блока приводит к a содействующее значение 1. Значения других коэффициентов в этой проблеме , , и .
d = 1; c = 1; a = 0; f = 0;
Создайте матрицы конечного элемента, которые кодируют проблему.
[Kc,Fc,B,ud] = assempde(model,c,a,f); [~,M,~] = assema(model,0,d,f);
Решите задачу на временных шагах 1 в течение многих времен в пределах от от 0 до 40.
tlist = linspace(0,40,41); u = parabolic(u0,tlist,Kc,Fc,B,ud,M);
35 successful steps 0 failed attempts 72 function evaluations 1 partial derivatives 11 LU decompositions 71 solutions of linear systems
Постройте решение за пределами блока время от времени 0, 10, 25, и 40. Убедитесь, что окраска является тем же самым для всех графиков.
umin = min(min(u)); umax = max(max(u)); subplot(2,2,1) pdeplot3D(model,'ColorMapData',u(:,1)) colorbar off view(125,22) title 't = 0' caxis([umin umax]); subplot(2,2,2) pdeplot3D(model,'ColorMapData',u(:,11)) colorbar off view(125,22) title 't = 10' caxis([umin umax]); subplot(2,2,3) pdeplot3D(model,'ColorMapData',u(:,26)) colorbar off view(125,22) title 't = 25' caxis([umin umax]); subplot(2,2,4) pdeplot3D(model,'ColorMapData',u(:,41)) colorbar off view(125,22) title 't = 40' caxis([umin umax]);

u0 — Начальное условиеНачальное условие в виде скаляра, вектора из узловых значений, вектора символов, символьного массива, строкового скаляра или вектора строки. Начальным условием является значение решения u в начальное время в виде вектор-столбца значений в узлах. Узлами является любой p в [p,e,t] структура данных, или model.Mesh.Nodes.
Если начальным условием является постоянный скалярный v, задайте u0 как v.
Если существует Np узлы в mesh и уравнения N в системе УЧП, задают u0 как вектор-столбец Np*элементы N, где первый Np элементы соответствуют первому компоненту решения u, второй Np элементы соответствуют второму компоненту решения u, и т.д.
Дайте текстовое выражение функции, такой как 'x.^2 + 5*cos(x.*y)'. Если вы имеете систему N > 1 уравнение, даете текстовый массив такой как
char('x.^2 + 5*cos(x.*y)',... 'tanh(x.*y)./(1+z.^2)')
Пример: x.^2+5*cos(y.*x)
Типы данных: double | char | string
Поддержка комплексного числа: Да
tlist — Времена решенияВремена решения в виде вектора действительных чисел. Решатель возвращает решение УЧП во времена решения.
Пример: 0:0.2:4
Типы данных: double
model — Модель PDEPDEModel объектМодель PDE в виде PDEModel объект.
Пример: model = createpde
c — Коэффициент УЧПКоэффициент УЧП в виде скаляра, матрицы, вектора символов, символьного массива, строкового скаляра, представляет в виде строки вектор или коэффициентную функцию. c представляет коэффициент c в скалярном УЧП
или в системе УЧП
Пример: 'cosh(x+y.^2)'
Типы данных: double | char | string | function_handle
Поддержка комплексного числа: Да
a — Коэффициент УЧПКоэффициент УЧП в виде скаляра, матрицы, вектора символов, символьного массива, строкового скаляра, представляет в виде строки вектор или коэффициентную функцию. a представляет коэффициент a в скалярном УЧП
или в системе УЧП
Пример: 2*eye(3)
Типы данных: double | char | string | function_handle
Поддержка комплексного числа: Да
f — Коэффициент УЧПКоэффициент УЧП в виде скаляра, матрицы, вектора символов, символьного массива, строкового скаляра, представляет в виде строки вектор или коэффициентную функцию. f представляет коэффициент f в скалярном УЧП
или в системе УЧП
Пример: char('sin(x)';'cos(y)';'tan(z)')
Типы данных: double | char | string | function_handle
Поддержка комплексного числа: Да
d — Коэффициент УЧПКоэффициент УЧП в виде скаляра, матрицы, вектора символов, символьного массива, строкового скаляра, представляет в виде строки вектор или коэффициентную функцию. d представляет коэффициент d в скалярном УЧП
или в системе УЧП
Пример: 2*eye(3)
Типы данных: double | char | string | function_handle
Поддержка комплексного числа: Да
b Граничные условияГраничные условия в виде граничной матрицы или массива данных граничных условий. Передайте массив данных граничных условий как указатель на функцию или как имя файла. Граничная матрица обычно является экспортом из приложения PDE Modeler.
Пример: b = 'circleb1', b = "circleb1", или b = @circleb1
Типы данных: double | char | string | function_handle
p — Поймайте в сети точкиПоймайте в сети точки в виде 2 Np матрица точек, где Np число точек в mesh. Для описания (pET) матрицы, смотрите Данные о Mesh, когда [p, e, t] Утраивается.
Как правило, вы используете pE, и t данные, экспортированные из приложения PDE Modeler или сгенерированные initmesh или refinemesh.
Пример: [p,e,t] = initmesh(gd)
Типы данных: double
e — Поймайте в сети ребраПоймайте в сети ребра в виде 7- Ne матрица ребер, где Ne количество ребер в mesh. Для описания (pET) матрицы, смотрите Данные о Mesh, когда [p, e, t] Утраивается.
Как правило, вы используете pE, и t данные, экспортированные из приложения PDE Modeler или сгенерированные initmesh или refinemesh.
Пример: [p,e,t] = initmesh(gd)
Типы данных: double
t — Поймайте в сети треугольникиПоймайте в сети треугольники в виде 4- Nt матрица треугольников, где Nt количество треугольников в mesh. Для описания (pET) матрицы, смотрите Данные о Mesh, когда [p, e, t] Утраивается.
Как правило, вы используете pE, и t данные, экспортированные из приложения PDE Modeler или сгенерированные initmesh или refinemesh.
Пример: [p,e,t] = initmesh(gd)
Типы данных: double
Kc — Матрица жесткостиМатрица жесткости в виде разреженной матрицы или как полная матрица. Смотрите Эллиптические уравнения. Как правило, Kc выход assempde.
Fc — Вектор загрузкиВектор загрузки в виде вектора. Смотрите Эллиптические уравнения. Как правило, Fc выход assempde.
M — Большая матрицаБольшая матрица. заданный как разреженная матрица или полная матрица. Смотрите Эллиптические уравнения.
Получить входные матрицы для pdeeig, hyperbolic или parabolic, запустите обоих assema и assempde:
[Kc,Fc,B,ud] = assempde(model,c,a,f); [~,M,~] = assema(model,0,d,f);
Примечание
Создайте M матричное использование assema с d, не a, в качестве аргумента перед f.
Типы данных: double
Поддержка комплексного числа: Да
rtol — Относительная погрешность для решателя ОДУ1e-3 (значение по умолчанию) | положительный действительныйОтносительная погрешность для решателя ОДУ в виде положительного действительного.
Пример: 2e-4
Типы данных: double
atol — Абсолютная погрешность для решателя ОДУ1e-6 (значение по умолчанию) | положительный действительныйАбсолютная погрешность для решателя ОДУ в виде положительного действительного.
Пример: 2e-7
Типы данных: double
u — Решение для УЧПРешение для УЧП, возвращенное как матрица. Матрицей является Np*N-by-T, где Np количество узлов в mesh, N является количеством уравнений в УЧП (N = 1 для скалярного УЧП), и T номер времен решения, означая длину tlist. Матрица решения имеет следующую структуру.
Первый Np элементы каждого столбца в u представляйте решение уравнения 1, затем следующий Np элементы представляют решение уравнения 2 и т.д. Решение u значение в соответствующем узле в mesh.
Столбец i из u представляет решение во время tlist(i).
Чтобы получить решение в произвольной точке в геометрии, используйте pdeInterpolant.
Чтобы построить решение, использовать pdeplot для 2D геометрии, или см. 3-D Графики Решения и Градиента с MATLAB® Functions.
parabolic внутренне вызовы assema, assemb, и assempde создать матрицы конечного элемента, соответствующие проблеме. Это вызывает ode15s решить получившуюся систему обыкновенных дифференциальных уравнений.
Partial Differential Equation Toolbox™ решает уравнения формы
Когда коэффициент m 0, но d не, документация называет уравнение parabolic, является ли это математически в параболической форме.
Параболическая проблема состоит в том, чтобы решить уравнение
с начальным условием
u (x, 0) = u 0 (x) для x ∊Ω
где x представляет 2D или 3-D точку и существуют граничные условия того же вида что касается эллиптического уравнения на ∂ Ω.
Чтения уравнения тепла
в присутствии распределенной потери тепла к среде. ρ является плотностью, C является тепловой способностью, k является теплопроводностью, h является пленочным коэффициентом, u ∞ является температурой окружающей среды, и f является источником тепла.
Для независимых от времени коэффициентов установившееся решение уравнения является решением стандартного эллиптического уравнения
– ∇ · (c ∇u) + au = f.
При принятии mesh на Ω и t ≥ 0, расширьте решение УЧП (в зависимости от x) в базисе метода конечных элементов:
Включение расширения в УЧП, умножение с тестом функционируют ϕj, интеграция по Ω и применение формулы Грина и выражения граничных условий
В матричном обозначении мы должны решить линейную, большую и разреженную систему ОДУ
Этот метод является традиционно вызываемым методом полудискретизации линий.
Решение ОДУ с начальным значением
Ui (0) = u 0 (xi)
дает к решению УЧП в каждом узле xi и время t. Обратите внимание на то, что K и F являются матрицей жесткости и правой стороной эллиптической проблемы
– ∇ · (c ∇u) + au = f в Ω
с исходными граничными условиями, в то время как M является только большой матрицей проблемы
– ∇ · (0∇u) + du = 0 в Ω.
Когда условия Дирихле являются зависящими от времени, F содержит вклады от производных времени h и r. Эти производные оценены конечными разностями заданных пользователями данных.
Система ОДУ плохо обусловливается. Явные интеграторы времени обеспечены требованиями устойчивости к очень кратковременным шагам, в то время как неявные решатели могут быть дорогими, поскольку они решают эллиптическую задачу на каждом временном шаге. Численное интегрирование системы ОДУ выполняется MATLAB® Функции Пакета ODE, которые эффективны для этого класса проблем. Временным шагом управляют, чтобы удовлетворить допуску при ошибке, и факторизации содействующих матриц выполняются только при необходимости. Когда коэффициенты являются зависящими от времени, необходимость переоценки и переразложения на множители матриц, каждый временной шаг может все еще сделать решение трудоемким, несмотря на то, что parabolic переоценивает только то, что меняется в зависимости от времени. В определенных случаях зависящая от времени матрица h Дирихле (t) может заставить контроль ошибок перестать работать, даже если проблема является математически звуковой и решение, которым является гладким u (t). Это может произойти, потому что интегратор ОДУ смотрит только на уменьшаемое решение v с u = Bv + ud. Как h изменения, вертящаяся схема, используемая для числовой устойчивости, может изменить порядок устранения от одного шага до следующего. Это означает, что B, v и ud все изменение с перерывами, несмотря на то, что сам u не делает.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.