exponenta event banner

градиент

Числовой градиент

Описание

пример

FX = gradient(F) возвращает одномерный числовой градиент вектора F. Продукция FX соответствует ∂F/∂x, которые представляют собой различия в направлении x (по горизонтали). Предполагается, что расстояние между точками равно 1.

пример

[FX,FY] = gradient(F) возвращает компоненты x и y двумерного числового градиента матрицы F. Дополнительный выход FY соответствует ∂F/∂y, которые представляют собой различия в направлении y (по вертикали). Расстояние между точками в каждом направлении принимается равным 1.

[FX,FY,FZ,...,FN] = gradient(F) возвращает значение N компоненты числового градиента F, где F является массивом с N размеры.

пример

[___] = gradient(F,h) использование h как равномерное расстояние между точками в каждом направлении. Можно указать любой из выходных аргументов в предыдущих синтаксисах.

пример

[___] = gradient(F,hx,hy,...,hN) определяет N параметры интервала для интервала в каждом размере F.

Примеры

свернуть все

Вычислите градиент монотонно увеличивающегося вектора.

x = 1:10
x = 1×10

     1     2     3     4     5     6     7     8     9    10

fx = gradient(x)
fx = 1×10

     1     1     1     1     1     1     1     1     1     1

Вычислите градиент 2-D xe-x2-y2 на сетке.

x = -2:0.2:2;
y = x';
z = x .* exp(-x.^2 - y.^2);
[px,py] = gradient(z);

Постройте контурные линии и векторы на том же рисунке.

figure
contour(x,y,z)
hold on
quiver(x,y,px,py)
hold off

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

Используйте градиент в определенной точке, чтобы линейно аппроксимировать значение функции в соседней точке и сравнить его с фактическим значением.

Уравнение для линейной аппроксимации значения функции

f (x) ≈f (x0) + (∇f) x0⋅ (x-x0).

То есть, если известно значение функции f (x0) и наклон производной (∇f) x0 в конкретной точке x0, то можно использовать эту информацию для аппроксимации значения функции в близлежащей точке f (x) = f (x0+ϵ).

Вычислите некоторые значения синусоидальной функции в диапазоне от -1 до 0,5. Затем вычислите градиент.

y = sin(-1:0.25:0.5);
yp = gradient(y,0.25);

Используйте значение функции и производную в x = 0.5 для прогнозирования значения sin(0.5005).

y_guess = y(end) + yp(end)*(0.5005 - 0.5)
y_guess = 0.4799

Вычислите фактическое значение для сравнения.

y_actual = sin(0.5005)
y_actual = 0.4799

Найдите значение градиента многомерной функции в указанной точке.

Рассмотрим многомерную функцию f (x, y) = x2y3.

x = -3:0.2:3;
y = x';
f = x.^2 .* y.^3;
surf(x,y,f)
xlabel('x')
ylabel('y')
zlabel('z')

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

Вычислите градиент на сетке.

[fx,fy] = gradient(f,0.2);

Извлечение значения градиента в точке (1,-2). Для этого сначала необходимо получить индексы точки, с которой требуется работать. Затем используйте индексы для извлечения соответствующих значений градиента из fx и fy.

x0 = 1;
y0 = -2;
t = (x == x0) & (y == y0);
indt = find(t);
f_grad = [fx(indt) fy(indt)]
f_grad = 1×2

  -16.0000   12.0400

Точное значение градиента f (x, y) = x2y3 в точке (1, -2) равно

(∇f) (1, -2) =2xy3iˆ+3x2y2jˆ=-16iˆ+12jˆ.

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

свернуть все

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

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

Равномерный интервал между точками во всех направлениях, заданный как скаляр.

Пример: [FX,FY] = gradient(F,2)

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

Интервал между точками в каждом направлении, определяемый как отдельные входы скаляров или векторов. Количество входов должно соответствовать количеству измерений массива F. Каждый вход может быть скаляром или вектором:

  • Скаляр задает постоянный интервал в этом измерении.

  • Вектор задает координаты значений вдоль соответствующего размера F. В этом случае длина вектора должна соответствовать размеру соответствующего размера.

Пример: [FX,FY] = gradient(F,0.1,2)

Пример: [FX,FY] = gradient(F,[0.1 0.3 0.5],2)

Пример: [FX,FY] = gradient(F,[0.1 0.3 0.5],[2 3 5])

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

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

свернуть все

Числовые градиенты, возвращаемые как массивы того же размера, что и F. Первый выход FX всегда градиент вдоль 2-го размера F, пересекая колонны. Второй выход FY всегда градиент вдоль 1-го размера F, пересекая ряды. Для третьего выхода FZ и последующие результаты, NНа выходе - градиент вдоль N-й размер F.

Подробнее

свернуть все

Числовой градиент

Численный градиент функции - это способ оценки значений частных производных в каждом измерении с использованием известных значений функции в определенных точках.

Для функции двух переменных F (x, y) градиент равен

∇F=∂F∂xi^+∂F∂yj^.

Градиент можно рассматривать как совокупность векторов, указывающих в направлении увеличения значений F. В MATLAB ® можно вычислить числовые градиенты для функций с любым количеством переменных. Для функции N переменных F (x, y, z,...) градиент равен

∇F=∂F∂xi^+∂F∂yj^+∂F∂zk^+... +∂F∂Nn^.

Совет

  • Использовать diff или пользовательский алгоритм для вычисления нескольких числовых производных вместо вызова gradient несколько раз.

Алгоритмы

gradient вычисляет центральную разницу для внутренних точек данных. Например, рассмотрим матрицу с разнесенными по единицам данными, A, который имеет горизонтальный градиент G = gradient(A). Значения внутреннего градиента, G(:,j)являются

G(:,j) = 0.5*(A(:,j+1) - A(:,j-1));

Нижний индекс j варьируется между 2 и N-1, с N = size(A,2).

gradient вычисляет значения по краям матрицы с односторонними различиями:

G(:,1) = A(:,2) - A(:,1);
G(:,N) = A(:,N) - A(:,N-1);

Если указать интервал между точками, то gradient соответствующим образом масштабирует различия. При указании двух или более выходов функция также вычисляет различия по другим размерам аналогичным образом. В отличие от diff функция, gradient возвращает массив с тем же количеством элементов, что и вход.

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

Создание кода C/C + +
Создайте код C и C++ с помощью MATLAB ® Coder™

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