evaluate

Интерполяция данных в выбранные местоположения

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

Описание

пример

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

Примечание

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

пример

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

uOut = evaluate(F,x,y,z) возвращает интерполированные значения из интерполяции 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
problem = allzerobc(g); % zero Dirichlet conditions
[p,e,t] = initmesh(g);
c = 1;
a = 0;
f = 1;
u = assempde(problem,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 находятся вне единичного диска.

Этот пример показывает, как интерполировать решение скалярной задачи с помощью x, y значения.

Решите уравнение -Δ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
problem = allzerobc(g); % zero Dirichlet conditions
[p,e,t] = initmesh(g);
c = 1;
a = 0;
f = 1;
u = assempde(problem,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
problem = allzerobc(g,3); % zero Dirichlet conditions, 3 components
[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(problem,p,e,t,c,a,f); % solve the PDE

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

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. The axes 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
problem = allzerobc(g); % zero Dirichlet conditions
[p,e,t] = initmesh(g);
c = 1;
a = 0;
f = 1;
d = 1;
tlist = 0:1/4:1;
u = parabolic(0,tlist,problem,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

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

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

Создайте интерполяцию

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

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));

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

свернуть все

Интерполяция, заданная как выход pdeInterpolant.

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

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

Пример: pOut = [-1,5,0,1;
1,1,2.2]

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

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

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

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

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

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

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

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

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

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

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

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

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

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

свернуть все

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

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

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

Подробнее о

свернуть все

Элемент

element является основным модулем в конечноэлементном методе.

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

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

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

Алгоритмы

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

Введенный в R2014b