curl

Кривая и угловая скорость векторного поля

Описание

пример

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

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

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

пример

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

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

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

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

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

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

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

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

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

Далее постройте график компонентов 3-D curl на срезанном xy-план.

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

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

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

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

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

quiver(x,y,Fx,Fy)

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

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

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

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

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

свернуть все

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

  • Для 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
Поддержка комплексного числа: Да

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

свернуть все

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

Скорость вращения в входных координатах, возвращенная в виде матрицы или трехмерные массивы.

Подробнее о

свернуть все

Численная кривая и скорость вращения

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

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

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

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

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

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

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

Алгоритмы

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

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

  • 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