Графики поля градиентов quiver

Вычисление градиента функции

Вычисление конечно-разностным методом градиента функций реализуется следующей функцией:

FX = gradient(F) — возвращает градиент функции одной переменной, заданной вектором ее значений F. FX соответствует конечным разностям в направлении х,

[FX.FY] = gradient(F) — возвращает градиент функции F(X,Y) двух переменных, заданной матрицей F, в виде массивов FX и FY. Массив FX соответствует конечным разностям в направлении х (столбцов). Массив FY соответствует конечным разностям в направлении у (строк);

[FX.FY.FZ,...] = gradient(F) — возвращает ряд компонентов градиента функции нескольких переменных, заданной в виде многомерного массива F;

[...] = gradient(F.h) — использует шаг h для установки расстояния между точками в каждом направлении (h — скалярная величина). По умолчанию h=l;

[...] = gradient(F.hi,h2,...) — если F является многомерным массивом, то расстояния задаются с помощью параметров h1, h2, h3,....

Для построения графиков полей градиента служат команды quiver:

· quiver(X.Y.U.V) — строит график поля градиентов в виде стрелок для каждой пары элементов массивов X и Y, причем элементы массивов U и V указывают направление и размер стрелок;

· qui ver(U, V) — строит векторы скорости в равнорасположенных точках на плоскости (х, у);

· quiver(U,V,S) или quiver(X,Y.U,V,S) — автоматически масштабирует стрелки по сетке и затем вытягивает их по значению S. Используйте S=0, чтобы построить стрелки без автоматического масштабирования;

· quiver(...,LINESPEC) — использует для векторов указанный тип линии. Указанные в LINESPEC маркеры рисуются у оснований, а не на концах векторов. Для отмены любого вида маркера используйте спецификацию '.'. Спецификации линий, цветов и маркеров были подробно описаны в разделе, посвященном команде plot;

· H=quiver(...) — строит график и возвращает вектор дескрипторов. Ниже представлен пример применения команды quiver:

Пример 3: Рассмотрим расчет и построение поля направлений для функции F = с использованием функции gradient.

>>[x, y] = meshgrid(-2:.2:2, -2:.2:2);

>>z = x .* exp(-x.^2 - y.^2);
>>[px, py] = gradient(z, .2, .2);
>>contour(z), hold on, quiver(px, py), hold off

 

Нетрудно заметить, что представление поля градиентов стрелками дает весьма наглядное представление о 'линиях поля, указывая области, куда эти линии впадают и откуда они исходят.