MATLAB学习笔记(七) 数值求导和积分

数值求导和积分

查分

diff(x) 计算相邻元素的一阶查分

梯度

梯度的本意是一个向量(矢量),表示某一函数在该点处的方向导数沿着该方向取得最大值,即函数在该点处沿着该方向(此梯度的方向)变化最快,变化率最大(为该梯度的模)。
梯度不等同于查分,梯度可以理解为导数的向量
FX = gradient(F) 返回F的一位梯度,F是一个向量
[Fx,Fy] = gradient(F) 返回F的二维梯度
gradient(F,h) h指定各个方向上的点距(点距大的话,得出来的梯度就会变小)

quad函数求积分

使用自适应Simpson方法计算积分,精度高 常用,
q = quad(fun, a, b) 计算a,b区间内的数值积分
quad(fun, a, b, tol)用指定绝对误差代替默认误差
[q,fcnt] = quad(fun, a, b)返回的fcnt是计算次数

计算 ∫ 0 2 1 x 3 − 2 x − 5 d x \int_{0}^{2}\frac{1}{x^3-2x-5}dx 02x32x51dx

在myfun.m中

function y = myfun(x)
y = 1./(x.^3-2*x-5);

调用

>> q = quad(@myfun,0,2)

q =

   -0.4605

quadl函数求积分

使用自适应lobatto方法计算积分,特点精度高,最为常用
方法同上

trapz函数求积分

通过梯形法求积分,精度低,速度快
T = trapz(y) 若y为向量为向量y积分,若是矩阵,每一列积分
rapz(x,y) 用梯形法计算y在x的积分

计算 ∫ o π s i n ( x ) d x \int_o^\pi{sin(x)dx} oπsin(x)dx
>> x = 0:pi/100:pi;
>> y = sin(x);
>> z = trapz(x,y)

z =

    1.9998

计算二重积分

q = dblqual(fun,xmin,xmax,ymin,ymax)

计算三重积分

q = triplequal(fun,xmin,xmax,ymin,ymax,zmin,zmax)

例:计算 ∫ − 1 1 ∫ 0 1 ∫ 0 π y s i n ( x ) + z c o s ( x ) d x d y d z \int_{-1}^1\int_{0}^{1}\int_{0}^{\pi}ysin(x)+zcos(x)dxdydz 11010πysin(x)+zcos(x)dxdydz
function z = integrnd3(x,y,z)
z = y*sin(x)+z*cos(x)
>> q = triplequad(@integrnd3,0,pi,0,1,-1,1)
>q =

    2.0000

你可能感兴趣的:(MATLAB)