主要内容

梯度

描述

例子

外汇=梯度(F返回一维的数值梯度的向量F.输出外汇对应于∂F/∂x的差异x(水平)的方向。点之间的间距假设为1

例子

外汇财政年度=梯度(F返回x而且y二维的分量数值梯度的矩阵F.额外的输出财政年度对应于∂F/∂y的差异y(垂直)方向。每个方向上点之间的间距假设为1

外汇财政年度FZ、……FN=梯度(F返回N的组成部分数值梯度F,在那里F是一个数组N维度。

例子

___=梯度(Fh使用h在每个方向上点之间的均匀间距。您可以在前面的语法中指定任何输出参数。

例子

___=梯度(Fhx沪元、……接下来的指定N的每个维度中的间距参数F

例子

全部折叠

计算一个单调递增向量的梯度。

X = 1:10
x =1×101 2 3 4 5 6 7 8 9 10
Fx = gradient(x)
fx =1×101 1 1 1 1 1 1 1 1 1 1

的二维梯度计算 x e - x 2 - y 2 在网格上。

X = -2:0.2:2;Y = x';Z = x. * exp(-x。^2 - y.^2);[px,py] =梯度(z);

在同一图中绘制等高线和向量。

身材轮廓(x,y,z)保持箭袋(x, y, px, py)

图中包含一个axes对象。轴类物体包含轮廓型、箭筒型2个物体。

利用某一特定点的梯度来线性逼近邻近点的函数值,并将其与实际值进行比较。

函数值的线性逼近方程为

f x f x 0 + f x 0 x - x 0

也就是说,如果你知道一个函数的值 f x 0 导数的斜率 f x 0 在某一点上 x 0 ,那么你就可以用这个信息来近似函数在附近点的值 f x f x 0 + ϵ

计算sin函数在-1到0.5之间的一些值。然后计算梯度。

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

用函数值和导数X = 0.5预测…的值罪(0.5005)

Y_guess = y(结束)+ yp(结束)*(0.5005 - 0.5)
Y_guess = 0.4799

计算实际值进行比较。

Y_actual = sin(0.5005)
Y_actual = 0.4799

求多元函数在某一点的梯度值。

考虑多元函数 f x y x 2 y 3.

X = -3:0.2:3;Y = x';F = x.^2 .* y.^3;冲浪(x, y, f)包含(“x”) ylabel (“y”) zlabel (“z”

图中包含一个axes对象。axis对象包含一个类型为surface的对象。

计算网格上的梯度。

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

提取该点的梯度值(1、2).要做到这一点,首先要获得你想要处理的点的索引。然后,使用索引提取相应的梯度值外汇而且财政年度

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 x 2 y 3. 在点(1,-2)处

f 1 - 2 2 x y 3. ˆ + 3. x 2 y 2 j ˆ - 1 6 ˆ + 1 2 j ˆ

输入参数

全部折叠

输入数组,指定为向量、矩阵或多维数组。

数据类型:|
复数支持:万博1manbetx是的

在所有方向的点之间的均匀间距,指定为标量。

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

数据类型:|
复数支持:万博1manbetx是的

在每个方向上点之间的间隔,指定为标量或向量的单独输入。的数组维度的数量必须匹配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])

数据类型:|
复数支持:万博1manbetx是的

输出参数

全部折叠

数值梯度,作为大小相同的数组返回F.第一个输出外汇是否总是沿二次元的梯度F,跨列。第二个输出财政年度是否总是沿着的第一维的梯度F,跨行。对于第三个输出FZ后面的输出N输出是沿着的梯度N的Th维F

更多关于

全部折叠

数值梯度

数值梯度是一种利用函数在某些点的已知值来估计各维的偏导数值的方法。

对于二元函数,Fxy),梯度为

F F x + F y j

的值递增的方向上的向量的集合F.在MATLAB®,你可以计算具有任意数量变量的函数的数值梯度。对于函数N变量,Fxyz,…),梯度为

F F x + F y j + F z k + ... + F N n

提示

  • 使用diff或者一个自定义算法来计算多个数值导数,而不是调用梯度很多次了。

算法

梯度计算中心差分内部数据点。例如,考虑一个单位间距数据的矩阵,一个,它具有水平梯度G = gradient(A).内部梯度值,G (:, j),都是

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

下标j之间的不同2而且n - 1,N = (A,2)

梯度沿着矩阵的边缘计算值单面的差异

G(:,1) = a (:,2) - a (:,1);G(:, n) = a (:, n) - a (:, n -1);

如果指定点间距,则梯度适当地衡量差异。如果指定两个或多个输出,那么函数也会以类似的方式计算其他维度上的差异。不像diff函数,梯度返回与输入元素数量相同的数组。

扩展功能

C/ c++代码生成
使用MATLAB®Coder™生成C和c++代码。

版本历史

R2006a之前介绍过

另请参阅

|