divergence

Вычисление расхождения векторного поля

Описание

пример

div = divergence(X,Y,Z,Fx,Fy,Fz) вычисляет численное расхождение векторного поля 3-D с векторными компонентами Fx, Fy, и Fz.

Массивы X, Y, и Z, которые определяют координаты для компонентов вектора Fx, Fy, и Fz, должны быть монотонными, но не должны быть равномерно разнесены. X, Y, и Z должны быть трехмерными массивами того же размера, которые могут быть произведены meshgrid.

div = divergence(Fx,Fy,Fz) принимает сетку точек выборки по умолчанию. Точки сетки по умолчанию X, Y, и Z определяются выражением [X,Y,Z] = meshgrid(1:n,1:m,1:p), где [m,n,p] = size(Fx). Используйте этот синтаксис, когда вы хотите сохранить память и не обеспокоены абсолютными расстояниями между точками.

пример

div = divergence(X,Y,Fx,Fy) вычисляет численное расхождение векторного поля 2-D с векторными компонентами Fx и Fy.

Матрицы X и Y, которые определяют координаты для Fx и Fy, должны быть монотонными, но не должны быть равномерно разнесены. X и Y должны быть 2-D матрицы того же размера, которые могут быть созданы meshgrid.

div = divergence(Fx,Fy) принимает сетку точек выборки по умолчанию. Точки сетки по умолчанию X и Y определяются выражением [X,Y] = meshgrid(1:n,1:m), где [m,n] = size(Fx). Используйте этот синтаксис, когда вы хотите сохранить память и не обеспокоены абсолютными расстояниями между точками.

Примеры

свернуть все

Загрузите набор данных векторного поля 3-D, который представляет поток ветра. Набор данных содержит массивы размера 35 на 41 на 15.

load wind

Вычислите численное расхождение векторного поля.

div = divergence(x,y,z,u,v,w);

Отобразите расхождения вектора объемных данных как плоскости разбиения. Покажите расхождение в yz-планы с x=90 и x=134, в xz-плановая с y=59, и в xy-плановая с z=0. Используйте цвет, чтобы указать на расхождение.

h = slice(x,y,z,div,[90 134],59,0);
shading interp
colorbar
daspect([1 1 1]);
axis tight
camlight
set([h(1),h(2)],'ambientstrength',0.6);

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

Задайте 2-D координаты и векторное поле.

[x,y] = meshgrid(-8:2:8,-8:2:8);
Fx = 200 - (x.^2 + y.^2);
Fy = 200 - (x.^2 + y.^2);

Постройте график компонентов векторного поля Fx и Fy.

quiver(x,y,Fx,Fy)

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

Найдите численное расхождение векторного поля 2-D. Постройте график контура расхождения.

D = divergence(x,y,Fx,Fy);
hold on
contour(x,y,D,'ShowText','on')

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

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

свернуть все

Входные координаты, заданные как матрицы или трехмерные массивы.

  • Для 2-D векторных полей X и Y должны быть 2-D матрицы того же размера, и этот размер может быть не меньше 2-by- 2.

  • Для 3-D векторных полей X, Y, и Z должен быть трехмерные массивы одинакового размера, и этот размер может быть не меньше 2-by- 2-by- 2.

Типы данных: single | double
Поддержка комплексного числа: Да

Компоненты векторного поля во входных координатах, заданные как матрицы или трехмерные массивы. Fx, Fy, и Fz должен быть того же размера, что и X, Y, и Z.

Типы данных: single | double
Поддержка комплексного числа: Да

Подробнее о

свернуть все

Численное расхождение

Численное расхождение векторного поля является способом оценки значений расхождения с помощью известных значений векторного поля в определенных точках.

Для векторного поля 3-D из трех переменных F(x,y,z)=Fx(x,y,z)e^x+Fy(x,y,z)e^y+Fz(x,y,z)e^z, определение расхождения F является

div F=·F=Fxx+Fyy+Fzz.

Для векторного поля 2-D из двух переменных F(x,y)=Fx(x,y)e^x+Fy(x,y)e^y, расхождение

div F=·F=Fxx+Fyy.

Алгоритмы

divergence вычисляет частные производные в его определении с помощью конечных различий. Для внутренних точек данных частные производные вычисляются с помощью центрального различия. Для точек данных вдоль ребер частные производные вычисляются с помощью одностороннего (прямого) различия.

Например, рассмотрим 2-D векторное поле F, которое представлено матрицами Fx и Fy в местах нахождения X и Y с size m-by- n. Местоположения - это сетки 2-D созданные [X,Y] = meshgrid(x,y), где x является вектором длины n и y является вектором длины m. divergence тогда вычисляет частные производные  <reservedrangesplaceholder3> /  <reservedrangesplaceholder2> и  <reservedrangesplaceholder1> /  <reservedrangesplaceholder0> как

  • dFx(:,i) = (Fx(:,i+1) - Fx(:,i-1))/(x(i+1) - x(i-1)) и

    dFy(j,:) = (Fy(j+1,:) - Fy(j-1,:))/(y(j+1) - y(j-1))

    для внутренних точек данных.

  • dFx(:,1) = (Fx(:,2) - Fx(:,1))/(x(2) - x(1)) и

    dFx(:,n) = (Fx(:,n) - Fx(:,n-1))/(x(n) - x(n-1))

    для точек данных на левых и правых ребрах.

  • dFy(1,:) = (Fy(2,:) - Fy(1,:))/(y(2) - y(1)) и

    dFy(m,:) = (Fy(m,:) - Fy(m-1,:))/(y(m) - y(m-1))

    для точек данных на верхних и нижних ребрах.

Численное расхождение векторного поля равно div = dFx + dFy.

Расширенные возможности

Представлено до R2006a