Main Content

gradient

Gradiente numérico

Descripción

ejemplo

FX = gradient(F) devuelve el gradiente numérico unidimensional del vector F. La salida FX corresponde a ∂F/∂x, que son las diferencias en la dirección (horizontal) x. Se asume que el espacio entre puntos es 1.

ejemplo

[FX,FY] = gradient(F) devuelve los componentes x e y del gradiente numérico bidimensional de la matriz F. La salida adicional FY corresponde a ∂F/∂y, que son las diferencias en la dirección (vertical) y. Se asume que el espacio entre puntos en cada dirección es 1.

[FX,FY,FZ,...,FN] = gradient(F) devuelve los componentes N del gradiente numérico de F, donde F es un arreglo con N dimensiones.

ejemplo

[___] = gradient(F,h) utiliza h como espacio uniforme entre puntos en cada dirección. Puede especificar cualquiera de los argumentos de salida de las sintaxis anteriores.

ejemplo

[___] = gradient(F,hx,hy,...,hN) especifica N parámetros de espaciado para el espaciado en cada dimensión de F.

Ejemplos

contraer todo

Calcule el gradiente de un vector que aumenta monotónicamente.

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

Calcule el gradiente 2D de xe-x2-y2 en una cuadrícula.

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

Represente las líneas de contorno y los vectores en la misma figura.

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

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

Use el gradiente en un punto concreto para aproximar linealmente el valor de la función en un punto cercano y compárelo con el valor actual.

La ecuación para una aproximación lineal de un valor de función es

f(x)f(x0)+(f)x0(x-x0).

Es decir, si sabe el valor de una función f(x0) y la pendiente de la derivada (f)x0 en un punto concreto x0, entonces puede usar esta información para aproximar el valor de la función en un punto cercano f(x)=f(x0+ϵ).

Calcule algunos valores de la función de seno entre -1 y 0,5. Después calcule el gradiente.

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

Utilice el valor de la función y la derivada en x = 0.5 para predecir el valor de sin(0.5005).

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

Calcule el valor real para comparar.

y_actual = sin(0.5005)
y_actual = 0.4799

Encuentre el valor del gradiente de una función multivariada en un punto especificado.

Considere la función multivariada 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 object. The axes object with xlabel x, ylabel y contains an object of type surface.

Calcule el gradiente en la cuadrícula.

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

Extraiga el valor del gradiente en el punto (1,-2). Para ello, primero obtenga los índices del punto con el que desea trabajar. Después, utilice los índices para extraer los valores del gradiente correspondiente de fx y 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

El valor exacto del gradiente de f(x,y)=x2y3 en el punto (1,-2) es

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

Argumentos de entrada

contraer todo

Arreglo de entrada, especificado como vector, matriz o arreglo multidimensional.

Tipos de datos: single | double
Soporte de números complejos:

Espaciado uniforme entre puntos en todas direcciones, especificado como un escalar.

Ejemplo: [FX,FY] = gradient(F,2)

Tipos de datos: single | double
Soporte de números complejos:

Espaciado entre puntos en cada dirección, especificado como entradas separadas de escalares o vectores. El número de entradas debe coincidir con el número de dimensiones del arreglo F. Cada entrada puede ser un escalar o un vector:

  • Un escalar especifica un espaciado constante en esa dimensión.

  • Un vector especifica las coordenadas de los valores de la dimensión correspondiente de F. En este caso, la longitud del vector debe coincidir con el tamaño de la dimensión correspondiente.

Ejemplo: [FX,FY] = gradient(F,0.1,2)

Ejemplo: [FX,FY] = gradient(F,[0.1 0.3 0.5],2)

Ejemplo: [FX,FY] = gradient(F,[0.1 0.3 0.5],[2 3 5])

Tipos de datos: single | double
Soporte de números complejos:

Argumentos de salida

contraer todo

Gradientes numéricos, devueltos como un arreglo del mismo tamaño que F. La primera salida FX siempre es el gradiente en la segunda dimensión de F, que va de columna a columna. La segunda salida FY siempre es el gradiente en la primera dimensión de F, que va de fila en fila. En la tercera salida FZ y las que siguen, la N-ésima salida es el gradiente en la N-ésima dimensión de F.

Más acerca de

contraer todo

Gradiente numérico

El gradiente numérico de una función es una forma de estimar los valores de las derivadas parciales en cada dimensión utilizando los valores conocidos de la función en determinados puntos.

En una función de dos variables, F (x, y), el gradiente es

F=Fxi^+Fyj^.

Puede considerarse el gradiente como una colección de vectores apuntando en la dirección de valores crecientes de F. En MATLAB® puede calcular gradientes numéricos para funciones con cualquier número de variables. En una función con N variables, F(x,y,z,...), el gradiente es

F=Fxi^+Fyj^+Fzk^+...+FNn^.

Sugerencias

  • Utilice diff o un algoritmo personalizado para calcular derivadas numéricas múltiples en lugar de llamar a gradient varias veces.

Algoritmos

gradient calcula la diferencia central para puntos de datos internos. Por ejemplo, considere una matriz con datos espaciados por unidades, A, que tiene gradiente horizontal G = gradient(A). Los valores internos de gradiente, G(:,j), son

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

El subíndice j varía entre 2 y N-1, con N = size(A,2).

gradient calcula valores en los bordes de la matriz con diferencias de un lado:

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

Si especifica la separación de puntos, la función gradient escala las diferencias según corresponda. Si especifica dos o más salidas, entonces la función también calcula las diferencias en otras dimensiones de forma similar. A diferencia de la función diff, gradient devuelve un arreglo con el mismo número de elementos que en la entrada.

Capacidades ampliadas

Generación de código C/C++
Genere código C y C++ mediante MATLAB® Coder™.

Historial de versiones

Introducido antes de R2006a