Графики поля градиентов 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
Нетрудно заметить, что представление поля градиентов стрелками дает весьма наглядное представление о 'линиях поля, указывая области, куда эти линии впадают и откуда они исходят.