gradient
数学函数
gradient,数学函数名称,用于计算数值梯度。
函数简介
函数功能:
计算数值梯度。
函数F(x,y,...)在(x0,y0,...)的梯度就是函数在该点的导数,通常在数学上记作▽F(x0,y0,...)或gradF(x0,y0,...)。
梯度是一个向量, 它的方向是函数在一点变化率最快的方向,而它的模就是函数沿这个方向的变化率。
在MATLAB中利用gradient计算梯度,将得到若干向量,它们指出了F的值增大的方向。
语法格式:
FX = gradient(F)
其中F是一个向量。该格式返回F的一维数值梯度。FX即∂F/∂x,即沿着x轴(水平轴)方向的导数。
[FX,FY] = gradient(F)
其中F是一个矩阵。该调用返回二维数值梯度的x、y部分。FX对应∂F/∂x, FY对应于∂F/∂y。
[FX,FY,FZ,...] = gradient(F)
这里,F是一个含有N个自变量的多元函数。
[...] = gradient(F,h)
这里的h指定了沿着梯度的方向取点的间隔。
[...] = gradient(F,h1,h2,...)
相关函数:contour,del2,diff
程序示例
示例一: 
v = -0.5:0.05:0.5;
[x, y] = meshgrid(v);
z = sqrt(1.0 - x.^2 - y.^2);
[dx, dy] = gradient(z, .2, .2);
mesh(x,y,z);
hold on;
contour(v, v, z), quiver(v,v,dx,dy);
hold off;
示例二:
close all; clear; clc;
% 在二维平面上绘制一个正电荷的电场线图。
k = 8.9875e+9; % 比例系数
e = 1.602e-19;% 一个电子带电量绝对值
e_r = 2.8e-15; % 正电子的半径
ke = k .* e; % k by e
% 指定区间: d=网格数据
d = -e_r*40:e_r:e_r*40;
[x, y] = meshgrid(d);
% 计算电位
V_max = ke / e_r; % 正电荷的表面电势最大,无穷远处电势为0
V = ke ./ sqrt(x.^2 + y.^2);
V(V==Inf) = V_max;
V(V>V_max) = V_max;
% 求电势的梯度,即电场强度
[E_x, E_y] = gradient(-V);
% 绘制电场线分布
t = 0:2*pi/20:2*pi;
sx = e_r * cos(t);
sy = e_r * sin(t);
hold on;
plot(0, 0, 'ro', 0,0, 'r+'); % 标出正电荷
streamline(x, y, E_x, E_y, sx, sy);
contour(x, y, V, linspace(min(V(:)), max(V(:)), 60));
axis([min(d), max(d), min(d), max(d)]);
hold off;
参考资料
最新修订时间:2024-04-21 19:25
目录
概述
函数简介
参考资料