curl

Завихрение и скорость вращения векторного поля

Описание

пример

[curlx,curly,curlz,cav] = curl(X,Y,Z,Fx,Fy,Fz) вычисляет числовое завихрение и скорость вращения 3-D векторного поля с векторными компонентами Fx, Fy, и Fz. Выход curlx, curly, и curlz представляйте векторные компоненты завихрения и cav представляет скорость вращения завихрения.

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

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

пример

[curlz,cav] = curl(X,Y,Fx,Fy) вычисляет числовое завихрение и скорость вращения 2D векторного поля с векторными компонентами Fx и Fy. Выход curlz представляет z - компонент завихрения и cav представляет скорость вращения завихрения.

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

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

пример

cav = curl(___) возвращает только скорость вращения векторного поля.

Примеры

свернуть все

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

load wind

Вычислите числовое завихрение и скорость вращения векторного поля.

[curlx,curly,curlz,cav] = curl(x,y,z,u,v,w);

Покажите 2D срез вычисленного завихрения и скорости вращения. Нарежьте данные в z(:,:,1), где z- координата равна-0.002.

k = 1;
xs = x(:,:,k); 
ys = y(:,:,k); 
zs = z(:,:,k); 
us = u(:,:,k); 
vs = v(:,:,k); 

Постройте скорость вращения в 2D координатах с помощью pcolor. Покажите x- и y- компоненты векторного поля с помощью quiver.

pcolor(xs,ys,cav(:,:,k))
shading interp
colorbar
hold on
quiver(xs,ys,us,vs,'k')
hold off

Затем постройте компоненты 3-D завихрения в нарезанном xy- плоскость.

quiver3(xs,ys,zs,curlx(:,:,k),curly(:,:,k),curlz(:,:,k),'b')
view(0,90)

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

[x,y] = meshgrid(-4:4,-4:4);
Fx = -y*2;
Fy = x*2;

Постройте векторные полевые компоненты Fx и Fy.

quiver(x,y,Fx,Fy)

Найдите числовое завихрение и скорость вращения 2D векторного поля. Значения завихрения и скорости вращения являются постоянными во всех входных координатах.

[curlz,cav] = curl(x,y,Fx,Fy)
curlz = 9×9

     4     4     4     4     4     4     4     4     4
     4     4     4     4     4     4     4     4     4
     4     4     4     4     4     4     4     4     4
     4     4     4     4     4     4     4     4     4
     4     4     4     4     4     4     4     4     4
     4     4     4     4     4     4     4     4     4
     4     4     4     4     4     4     4     4     4
     4     4     4     4     4     4     4     4     4
     4     4     4     4     4     4     4     4     4

cav = 9×9

     2     2     2     2     2     2     2     2     2
     2     2     2     2     2     2     2     2     2
     2     2     2     2     2     2     2     2     2
     2     2     2     2     2     2     2     2     2
     2     2     2     2     2     2     2     2     2
     2     2     2     2     2     2     2     2     2
     2     2     2     2     2     2     2     2     2
     2     2     2     2     2     2     2     2     2
     2     2     2     2     2     2     2     2     2

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

load wind

Вычислите скорость вращения векторного поля.

cav = curl(x,y,z,u,v,w);

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

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

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

свернуть все

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

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

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

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

Векторные полевые компоненты во входе координируют в виде матриц или трехмерных массивов. Fx, Fy, и Fz должен быть одного размера с XY, и 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

curl F=×F=(FzyFyz)e^x+(FxzFzx)e^y+(FyxFxy)e^z.

Скорость вращения задана как ω=12(×F)·F^.

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

curl F=×F=(FyxFxy)e^z.

Скорость вращения задана как ω=12(×F)z=12(FyxFxy)e^z.

Алгоритмы

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

Например, рассмотрите 2D векторное поле F, который представлен матрицами Fx и Fy в местоположениях X и Y с размером m- n. Местоположения являются 2D сетками, созданными [X,Y] = meshgrid(x,y), где x вектор из длины n и y вектор из длины mзавихрение затем вычисляет частные производные Fy / ∂x и Fx / ∂y как

  • dFy_dx(:,i) = (Fy(:,i+1) - Fy(:,i-1))/(x(i+1) - x(i-1)) и

    dFx_dy(j,:) = (Fx(j+1,:) - Fx(j-1,:))/(y(j+1) - y(j-1))

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

  • dFy_dx(:,1) = (Fy(:,2) - Fy(:,1))/(x(2) - x(1)) и

    dFy_dx(:,n) = (Fy(:,n) - Fy(:,n-1))/(x(n) - x(n-1))

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

  • dFx_dy(1,:) = (Fx(2,:) - Fx(1,:))/(y(2) - y(1)) и

    dFx_dy(m,:) = (Fx(m,:) - Fx(m-1,:))/(y(m) - y(m-1))

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

Числовое завихрение векторного поля равно curlz = dFy_dx - dFx_dy и скоростью вращения является cav = 0.5*curlz.

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

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