十四、数值微积分
14.1 polyva()
多项式计算在理工科教学、科研中有着特殊地位和意义。matlab作为重要的工程计算软件也给出了相应的计算指令来完成这一工作。其中就有多项式求值polyval函数,其调用格式为:y = polyval(p,x);,返回n此多项式p在x处的值
参数说明:
p:一个长度为n+1的向量,其元素为按降幂排列的多项式系数
x:可以是一个矩阵或者一个向量,在这两种情况下,polyval计算在x中任意元素处的多项式p的估值
示例(9x^3-5x^2+3x+7):
图14-1 polyval函数
14.2 polyder()
多项式求微分函数polyder,其调用格式为:
1.k = polyder(p):返回多项式p的微分表达式的系数
2.k = polyder(a,b):返回多项式a和b乘积的微分表达式的系数
3.[q,d] = polyder(b,a):返回多项式a和b微分商b/a的分子q和分母d
示例(3x^2+6x+9)(x^2+2x):
图14-2 polyder函数
14.3 polyint()
多项式积分函数polyint,其调用格式为:polyint(p,c);,p是多项式对应的系数,c是常数项(可以任意指定)
示例(5x^4-2x^2+1):
图14-3 polyint函数
14.4 dif()
上面我们讲的都是多项式的一些数值计算的方法,但如果不是多项式如何计算呢,举个栗子,如何求sin(x)在某一点的微分,即使我们知道sin’(x) = cos(x),但还是要问,如果不知道怎么办?我们想起以前我们学微分的时候,如何用定义求
图14-4 函数求微分
其实我们只要知道两个点,一个(x0,f(x0)),另一个(x0+h,f(x0+h))就可以了,这里涉及到一个函数diff,其调用格式为:
Y=diff(X):X是一个m维的向量,那么Y返回的是一个m-1维的向量,其中Y的元素分别是X相邻元素之间的差值,即Y=[X(2)-X(1) X(3)-X(2) ... X(m)-X(m-1)];X是一个非空的m*n的矩阵,那么Y返回的是一个(m-1)*n的矩阵,其中Y的元素分别是X行与行之间的差值,Y=[X(2,:)-X(1,:) X(3,:)-X(2,:) ... X(m,:)-X(m-1,:)]。下面我们就给出示例,求一下sin(x)在x = pi/2时的微分
示例:
图14-5 diff函数
当然我们知道cos(pi/2)=0,这里显然不等于0,读者可以把h不断缩小,得出来的值也会不断接近0
14.5 integral()
integral函数的作用是求定积分,其调用格式为:integral(fcn handle,x0,x1);,fcn handle是函数句柄,x0表示积分下限,x1表示积分上限,函数句柄的概念我不做过多解释,读者只需要记住使用的格式,下面先给出示例
示例:
图14-6 integral()函数
在这里,函数句柄的格式为:@(自变量)函数体,可以把@(自变量)当作是d(自变量),只不过放到前面去了
14.6 integral2()
二重积分函数integral2(),调用格式类似integral,直接给出示例
示例:
图14-7 f(x,y)
图14-8 integral2函数
14.7 integral3()
三重积分函数integral3(),调用格式类似integral,直接给出示例
示例:
图14-9 f(x,y,z)
图14-10 integral3函数