evaluate

Интерполируйте данные к выбранным местоположениям

Эта функция поддерживает устаревший рабочий процесс. Используя [p,e,t] представление FEMesh данные не рекомендуются. Использование interpolateSolution и evaluateGradient интерполировать решение для УЧП и его градиент к произвольным точкам, не переключаясь на [p,e,t] представление.

Описание

пример

uOut = evaluate(F,pOut) возвращает интерполированные значения от interpolant F в точках pOut.

Примечание

Если точка запроса находится вне mesh, evaluate возвращает NaN для той точки.

пример

uOut = evaluate(F,x,y) возвращает интерполированные значения от interpolant F в точках [x(k),y(k)], для k от 1 через numel(x). Этот синтаксис применяется к 2D геометрии.

uOut = evaluate(F,x,y,z) возвращает интерполированные значения от interpolant F в точках [x(k),y(k),z(k)], для k от 1 через numel(x). Этот синтаксис применяется к 3-D геометрии.

Примеры

свернуть все

В этом примере показано, как интерполировать решение скалярной проблемы с помощью pOut матрица значений.

Решите уравнение -Δu=1 на единичном диске с нулем условия Дирихле.

g0 = [1;0;0;1]; % circle centered at (0,0) with radius 1
sf = 'C1';
g = decsg(g0,sf,sf'); % decomposed geometry matrix
model = createpde;
gm = geometryFromEdges(model,g);
% Zero Dirichlet conditions
applyBoundaryCondition(model,'dirichlet', ...
                             'Edge',(1:gm.NumEdges), ...
                             'u',0);
[p,e,t] = initmesh(gm);
c = 1;
a = 0;
f = 1;
u = assempde(model,p,e,t,c,a,f); % solve the PDE

Создайте интерполятор для решения.

F = pdeInterpolant(p,t,u);

Сгенерируйте случайный набор координат в модульном квадрате. Оцените интерполированное решение в случайных точках.

rng default % for reproducibility
pOut = rand(2,25); % 25 numbers between 0 and 1
uOut = evaluate(F,pOut);
numNaN = sum(isnan(uOut))
numNaN = 9

uOut содержит некоторый NaN записи, потому что некоторые точки в pOut находятся вне единичного диска.

В этом примере показано, как интерполировать решение скалярной проблемы с помощью xY значения.

Решите уравнение -Δu=1 на единичном диске с нулем условия Дирихле.

g0 = [1;0;0;1]; % circle centered at (0,0) with radius 1
sf = 'C1';
g = decsg(g0,sf,sf'); % decomposed geometry matrix
model = createpde;
gm = geometryFromEdges(model,g);
% Zero Dirichlet conditions
applyBoundaryCondition(model,'dirichlet', ...
                             'Edge',(1:gm.NumEdges), ...
                             'u',0);
[p,e,t] = initmesh(gm);
c = 1;
a = 0;
f = 1;
u = assempde(model,p,e,t,c,a,f); % solve the PDE

Создайте интерполятор для решения.

F = pdeInterpolant(p,t,u); % create the interpolant

Оцените интерполированное решение в узлах решетки в модульном квадрате с разрядкой 0.2.

[x,y] = meshgrid(0:0.2:1);
uOut = evaluate(F,x,y);
numNaN = sum(isnan(uOut))
numNaN = 12

uOut содержит некоторый NaN записи, потому что некоторые точки в модульном квадрате находятся вне единичного диска.

В этом примере показано, как интерполировать решение системы N = 3 уравнения.

Решите систему уравнений -Δu=f с граничными условиями Дирихле на единичном диске, где

f=[sin(x)+cos(y),cosh(xy),xy1+x2+y2]T.

g0 = [1;0;0;1]; % circle centered at (0,0) with radius 1
sf = 'C1';
g = decsg(g0,sf,sf'); % decomposed geometry matrix
model = createpde(3);
gm = geometryFromEdges(model,g);
applyBoundaryCondition(model,'dirichlet', ...
                             'Edge',(1:gm.NumEdges), ...
                             'u',zeros(3,1));
[p,e,t] = initmesh(g);
c = 1;
a = 0;
f = char('sin(x) + cos(y)','cosh(x.*y)','x.*y./(1+x.^2+y.^2)');
u = assempde(model,p,e,t,c,a,f); % solve the PDE

Создайте interpolant для решения.

F = pdeInterpolant(p,t,u); % create the interpolant

Интерполируйте решение в кругу.

s = linspace(0,2*pi);
x = 0.5 + 0.4*cos(s);
y = 0.4*sin(s);
uOut = evaluate(F,x,y);

Постройте эти три компонента решения.

npts = length(x);
plot3(x,y,uOut(1:npts),'b')
hold on
plot3(x,y,uOut(npts+1:2*npts),'k')
plot3(x,y,uOut(2*npts+1:end),'r')
hold off
view(35,35)

Figure contains an axes object. The axes object contains 3 objects of type line.

В этом примере показано, как интерполировать решение, которое зависит вовремя.

Решите уравнение

ut-Δu=1

на единичном диске с нулем условия Дирихле и нулевые начальные условия. Решите в пять раз от 0 до 1.

g0 = [1;0;0;1]; % circle centered at (0,0) with radius 1
sf = 'C1';
g = decsg(g0,sf,sf'); % decomposed geometry matrix
model = createpde;
gm = geometryFromEdges(model,g);
% Zero Dirichlet conditions
applyBoundaryCondition(model,'dirichlet', ...
                             'Edge',(1:gm.NumEdges), ...
                             'u',0);
[p,e,t] = initmesh(gm);
c = 1;
a = 0;
f = 1;
d = 1;
tlist = 0:1/4:1;
u = parabolic(0,tlist,model,p,e,t,c,a,f,d);
52 successful steps
0 failed attempts
106 function evaluations
1 partial derivatives
13 LU decompositions
105 solutions of linear systems

Создайте interpolant для решения.

F = pdeInterpolant(p,t,u);

Интерполируйте решение в x = 0.1, y = -0.1, и все доступные времена.

x = 0.1;
y = -0.1;
uOut = evaluate(F,x,y)
uOut = 1×5

         0    0.1809    0.2278    0.2388    0.2413

Решение запускается в 0 во время 0, как это должно. Это растет до приблизительно 1/4 во время 1.

В этом примере показано, как интерполировать эллиптическое решение сетки.

Задайте и решите задачу

Используйте встроенные функции геометрии, чтобы создать L-образную область с нулем граничные условия Дирихле. Решите эллиптический УЧП с коэффициентами c=1, a=0, f=1, с нулем граничные условия Дирихле.

[p,e,t] = initmesh('lshapeg'); % Predefined geometry
u = assempde('lshapeb',p,e,t,1,0,1); % Predefined boundary condition

Создайте Interpolant

Создайте interpolant для решения.

F = pdeInterpolant(p,t,u);

Создайте сетку для решения

xgrid = -1:0.1:1;
ygrid = -1:0.2:1;
[X,Y] = meshgrid(xgrid,ygrid);

Получившаяся сетка имеет некоторые точки, которые находятся вне L-образной области.

Оцените решение на сетке

uout = evaluate(F,X,Y);

Интерполированное решение uout вектор-столбец. Можно изменить его, чтобы совпадать с размером X или Y. Это дает матрицу, как выход tri2grid функция.

Z = reshape(uout,size(X));

Входные параметры

свернуть все

Interpolant в виде выхода pdeInterpolant.

Пример: F = pdeInterpolant(p,t,u)

Точки запроса в виде матрицы с двумя или тремя строками. Первая строка представляет x компонент точек запроса, вторая строка представляет y компонент, и, для 3-D геометрии, третья строка представляет z компонент. evaluate вычисляет interpolant в каждом столбце pOut. Другими словами, evaluate интерполирует в точках pOut(:,k).

Пример: дуйтесь = [-1.5,0,1;
1,1,2.2]

Типы данных: double

Компонент точки запроса в виде вектора или массива. evaluate интерполирует в любой 2D точки [x(k),y(k)] или в 3-D точках [x(k),y(k),z(k)]. x и y, и z массивы должны содержать то же количество записей.

evaluate преобразовывает компоненты точки запроса к линейному представлению индекса, такие как x(:).

Пример: x = -1:0.2:3

Типы данных: double

Компонент точки запроса в виде вектора или массива. evaluate интерполирует в любой 2D точки [x(k),y(k)] или в 3-D точках [x(k),y(k),z(k)]. x и y, и z массивы должны содержать то же количество записей.

evaluate преобразовывает компоненты точки запроса к линейному представлению индекса, такие как y(:).

Пример: y = -1:0.2:3

Типы данных: double

Компонент точки запроса в виде вектора или массива. evaluate интерполирует в любой 2D точки [x(k),y(k)] или в 3-D точках [x(k),y(k),z(k)]. x и y, и z массивы должны содержать то же количество записей.

evaluate преобразовывает компоненты точки запроса к линейному представлению индекса, такие как z(:).

Пример: z = -1:0.2:3

Типы данных: double

Выходные аргументы

свернуть все

Интерполированные значения, возвращенные как массив. uOut имеет одинаковое число столбцов как данные u используемый в создании F. Если u зависит вовремя, uOut содержит столбец для каждого временного шага. Для независимого от времени u, uOut имеет один столбец.

Количество строк в uOut количество уравнений в системе УЧП, N, времена количество точек запроса, pOut. Первый pOut строки соответствуют уравнению 1, следующему pOut строки соответствуют уравнению 2 и так далее.

Если точка запроса находится вне mesh, evaluate возвращает NaN для той точки.

Больше о

свернуть все

Элемент

element является основной единицей в методе конечных элементов.

Для 2D проблем элементом является треугольник в model.Mesh.Element свойство. Если треугольник представляет линейный элемент, он имеет узлы только в треугольных углах. Если треугольник представляет квадратичный элемент, то он имеет узлы в треугольных углах и центрах ребра.

Для 3-D проблем элементом является четырехгранник с или четырьмя или десятью точками. (Линейный) четырехгранник с четырьмя точками имеет узлы только в его углах. (Квадратичный) четырехгранник с десятью точками имеет узлы в своих углах и в центральную точку каждого ребра.

Для получения дополнительной информации смотрите Данные о Mesh.

Алгоритмы

Для каждой точки, где решение требуют (pOut), в процессе интерполяции существует два шага. Во-первых, element, содержащий точку, должен быть расположен и во-вторых, интерполяция в том элементе должна быть выполнена с помощью функций формы элемента и значений решения в точках узла элемента.

Введенный в R2014b