在MATLAB中,如何用grandient命令求函数的近似梯度
使用grandient函数求近似梯度格式如下。
·[fx,fy]=grandient(f)的命令返回矩阵f的函数梯度,fx相当于df/dx,即在x方向的差分值。fy相当于df/dy,即在y方向的差分值。各个方向的间隔设为1。当f是一个向量时, df=grandient(f)命令返回一个一维向量。
·[fx,fy]=grandient(f,h)命令使用h作为各个方向的间隔点,这里h是个数量。
·[fx,fy]=grandient(f,hx,hy)命令使用hx、hy为指定间距,其中f为二维函数。而hx、hy可以为向量或者数量,但是hx、hy为向量时,它们的维数必须和f的维数相匹配。
·[fx,fy,fz]=grandient(f)命令返回一个f的一维梯度,其中f是一个三维向量,fz相当于df/dz,即在z方向的差分。grandient(f,h)命令使用h作为各个方向的间距,其中h为一个数量。
·[fx,fy,fz]=grandient(f,hx,hy,hz)命令使用hx、hy和hz为指定间距。
·[fx,fy,fz]=grandient(f,…)命令在f为N维数组时作相似扩展。
例题 求函数的梯度
>> clear
>> t=[-pi:0.01:pi];
>> x=sin(t);
>> dx=gradient(x);
>> subplot(2,1,1)
>> plot(x)
>> subplot(2,1,2)
>> plot(dx)
所得相应的结果如图5-1所示。
图5-1 函数sin(t)的梯度图
>> x=[-1:0.1:1];
>> [x,y]=meshgrid(x);
>> z=x.^2+y.^2;
>> [Dx,Dy]=gradient(z);
>> subplot(2,1,1)
>> mesh(z)
>> subplot(2,1,2)
>> quiver(Dx,Dy)
绘出相应图像如图5-2所示。
图5-2 函数梯度图