MATLAB中的微积分运算(数值符号)
显然这个函数是单词differential(微分)的简写,⽤于计算微分。实际上准确来说计算的是差商。
如果输⼊⼀个长度为n的⼀维向量,则该函数将会返回长度为n-1的向量,向量的值是原向量相邻元素的差,于是可以计算⼀阶导数的有限差分近似。
(1)符号微分
1.常⽤的微分函数
函数:diff(f)    求表达式f对默认⾃变量的⼀次微分值
diff(f,x)  求表达式f对⾃变量x的⼀次积分值
diff(f,n)  求表达式f对默认⾃变量的n次微分值
diff(f,t,n)求表达式f对⾃变量t的n次微分值
>> x=1:10
x =
1    2    3    4    5    6    7    8    9    10
>> diff(x)
ans =
1    1    1    1    1    1    1    1    1
例1:求矩阵中各元素的导数
求矩阵[1/(1+a)  (b+x)/cos(x)
1/(x*y)  exp(x^2)]
对x的微分,可以输⼊以下命令
A = sym('[1/(1+a),(b+x)/cos(x);1,exp(x^2)]');
B = diff(A,'x')
可得到如下结果:
例2:求偏导数
求的偏导数。
syms x y;
f = x*exp(y)/y^2;
fdx = diff(f,x)
fdy = diff(f,y)
可得到如下结果:
例3:求复合函数的导数
求的导数
sym('x');
y = 'x*f(x^2)'
y1 = diff(y,'x')
得到结果如下:
例4:求参数⽅程的导数
对参数⽅程求导
syms a b t
f1 = a*cos(t);
f2 = b*sin(t);
A = diff(f2)/diff(f1) %此处代⼊了参数⽅程的求导公式
B = diff(f1)*diff(f2,2)-diff(f1,2)*diff(f2)/diff(f1)^3  %求⼆阶导数
可得到如下结果:
例5:求隐函数的导数
求的⼀阶导数
syms x y
p = 'x*y(x)-exp(x+y(x))'
%隐函数可进⾏整体表⽰
%注意y(x)这种写法,它代表了y是关于x的函数
p1 = diff(p,x)
可得到如下结果:
2.符号积分
1符号函数的不定积分
函数:int
功能:求取函数的不定积分
语法:
int(f)
int(f,x)
说明:第⼀个是求函数f对默认⾃变量的积分值;第⼆个是求⾃变量f对对⾃变量t的不定积分值。
例:分别求函数f(x)=(3-x2)3、的不定积分。
x = sym('x');
%函数的输⼊
f1 = (3-x^2)^3;
f2 = sqrt(x^3 + x^4);
%对函数进⾏积分
intf1 = int(f1)
intf2 = int(f2)
可得结果如下:
2符号函数的定积分
函数:int
功能:求取函数的定积分
语法:
int(f,a,b)
int(f,x,a,b)
说明:第⼀个是求表达式f对默认⾃变量的定积分值,积分区间为
[a,b];第⼆个是求表达式f对⾃变量x的定积分值,积分区间为[a,b]。
例:分别求、、、的定积分。syms x t
%输⼊函数⽅程式
f1 = abs(1-x);
f2 = 1/(1+x^2);
f3 = 4*t*x;
f4 = x^3/(x-1)^100;
%求取函数积分
intf1 = int(f1,1,2)
intf2 = int(f2,-inf,+inf)
intf3 = int(f3,2,sin(t))
intf4 = int(f4,2,3)
可得到如下结果:
(2)数值微分
在MATLAB中,没有直接提供求数值导数的函数,只有计算向前差分的函数diff。
函数:diff
功能:求取数值微分
语法:
DX = diff(X)
DX = diff(X,n)
DX = diff(X,n,dim)
说明:第⼀个计算向量X的向前差分,即DX(i) = X(i+1)-X(i),i=1,2,...,n-1。第⼆个是计算X的n阶向前差分。例如,diff(X,2)=diff(diff(X))。第三个计算矩阵A的n阶差分,当dim=1或缺省状态时,按⾏计算差分;dim=2,按列计算差分。
例:设x由[0,2π]间均匀分布的10个点组成,求sinx的1到3阶差分。
x = linspace(0,2*pi,10);
y = sin(x);
Dy = diff(y)
Dy2 = diff(y,2)
Dy3 = diff(y,3)
plot(x,y,'B');hold on
plot(Dy,'Y');plot(Dy2,'G');plot(Dy3,'R');
title('sinx的1到3阶差分')
xlabel('x');ylabel('y')
可得到结果如下
图形如下:
注:⼆维图形常⽤设置选项
例:求函数的数值微分,并画出函数图⽐较
x = 0:0.01:2 %数值微分&积分需要先确定数值的范围,这⼀点与符号微分&积分有所不同。
f = x.^2.*cos(x)./(3*x+2)
Df = diff(f)
plot(x,f,'r')diff函数
hold on
y = x(1:200);
plot(y,Df,'b')
legend('函数图','微分图')
可得到如图所⽰图线

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。