利⽤MATLAB 求符号微积分
⽂章⽬录
摘要
本⽂是《科学计算与MATLAB语⾔》专题七第2⼩节的学习笔记,如果⼤家有时间的话,可以去听听课,没有的话,可以看看我的笔记,还是很不错的。本节主要讲了如何利⽤MATLAB求符号函数的极限、倒数、积分,⽂中每个代码我都跑过⼀遍,可以直接复制到MATLAB中运⾏。
1 符号函数的极限
(1)极限
求符号函数极限的命令为limit,其调⽤格式为:limit(f,x,a)
即求函数f关于变量x在a点的极限。
(2)单边极限
limit函数的另⼀种功能是求单边极限,其调⽤格式为:limit(f,x,a,‘right’)limit(f,x,a,‘left’)例
1 求下列极限。
(1) (2) syms a m x n ;
f=(x^(1/m)-a^(1/m))/(x-a);g=(1+1/n)^n;limit(f,x,a)limit(g,n,inf)ans = a^(1/m - 1)/m ans = exp(1)
exp(1)即e
2 符号函数的导数
MATLAB中的求导函数为:diff(f,x,n)
即求函数f关于变量x的n阶导数。参数x的⽤法同求极限函数limit,可以缺省,默认值与limit相同,n的默认值是1。例2 求下列函数的导数。(1) (2) (1) syms x y z;f=sqrt(1+exp(x));diff(f)ans =
exp(x)/(2*(exp(x) + 1)^(1/2))
lim x →a x −a
−3
x 3a
lim (1+x →∞)n 1
n
y =1+e x
z =,求z ,z 。
y 2xe y x ′
y ′y =
1+e x
(2) g=x*exp(y)/y^2;diff(g,x)diff(g,y)ans = exp(y)/y^2 ans =
(x*exp(y))/y^2 - (2*x*exp(y))/y^3
3 符号函数的积分
(1)不定积分
在MATLAB中,求不定积分的函数是int()
其常⽤的调⽤格式为:int(f,x)
即求函数f对变量x的不定积分。例3 求下列不定积分。(1) (2) (1) syms x t;f=(3-x^2)^3;int(f)ans =
- x^7/7 + (9*x^5)/5 - 9*x^3 + 27*x
(2) g=5*x*t/(1+x^2);int(g,t)ans =
(5*t^2*x)/(2*(x^2 + 1))
(2)定积分
在MATLAB中,定积分的计算也使⽤int()函数,但调⽤格式有区别:int(f,x,a,b)
其中,a、b分别表⽰定积分的下限和上限。
当函数f关于变量x在闭区间[a,b]可积时,函数返回⼀个定积分结果。当a、b中有⼀个是inf时,函数返回⼀个⼴义积分。当a、b中有⼀个符号表达式时,函数返回⼀个符号函数。例4 求下列定积分。
(1) (2) (3) (1) syms x t;int(abs(1-x),1,2)ans =1/2
z =
,求z ,z 。
y 2xe y x ′
y ′(3−∫x )dx 23dt ∫1+x 25xt
(3−∫x )dx
23dt
∫1+x 25xt
∣1−∫12
x ∣dx
dx ∫−∞+∞1+x 21dt
∫2sinx t 4x ∣1−∫12
x ∣dx
(2) int(1/(1+x^2),-inf,inf)ans = pi
(3) int(4*x/t,t,2,sin(x))ans =
4*x*(log(sin(x)) - log(2))
河道⽔流量的估算问题
根据实际测量,得到河流某处宽600m,其横截⾯不同位置某⼀时刻的⽔深如下表所⽰。
x 050100150200250300350400450500550600h(x)
4.4
4.5
4.6
4.8
4.9
5.1diff函数
5.4
5.2
5.5
5.2
4.9
4.8
4.7
①若此刻⽔流的流速为0.6m/s,试估计该河流此刻的流量。
②已知x⽅向[50,60]区间为坡式护岸的下部护脚部分,根据相关堤防设计规范,抛⽯护岸护脚坡度应缓于1:1.5(正切值),请估计⽔流冲刷是否已破坏该区域的护脚。
①先拟合出河床曲线,然后进⾏定积分,计算出河流横截⾯,即可估计流量。②根据河床曲线,计算其导函数,并判断相应范围内导函数的取值是否⼤于1:1.5。
xi=0:50:600;
yi=[4.4,4.5,4.6,4.8,4.9,5.1,5.4,5.2,5.5,5.2,4.9,4.8,4.7]; p=polyfit(xi, yi,3);
plot(xi, yi,'o', xi, polyval(p, xi)); %同时画出散点图与拟合函数。syms y x; y=poly2sym(p,x); s=int(y,x,0,600); v=s*0.6; eval(v)ans =
1.7874e+03
⽅法⼀:
xi=0:50:600;
yi=[4.4,4.5,4.6,4.8,4.9,5.1,5.4,5.2,5.5,5.2,4.9,4.8,4.7]; yn=-yi;
p=polyfit(xi, yn,3); %这两句是为了让函数开⼝朝上,更符合河道真实情况。plot(xi, yn,'o', xi, polyval(p,
xi)); syms y x yii; y=poly2sym(p,x); yii=diff(y,x); x=50:60; k=eval(yii);
all(abs(k)<1/1.5)%判断相应范围内导函数的取值是否⼩于1:1.5。all (i ):若向量i 中所有元素⾮零,结果为1,否则结果为0。ans = logical 1
dx ∫−∞+∞1+x 21dt
∫2
sinx t 4x
⽅法⼆:
xi=0:50:600;
yi=[4.4,4.5,4.6,4.8,4.9,5.1,5.4,5.2,5.5,5.2,4.9,4.8,4.7];
yn=-yi;
p=polyfit(xi, yn,3); %这两句是为了让函数开⼝朝上,更符合河道真实情况。
plot(xi, yn,'o', xi, polyval(p, xi)); %polyval(p, xi)可以求得多项式在xi的函数值并放到p中。
x=50:60; %步长为1
y=polyval(p,x);
k=diff(y)/1;%diff为差分函数,步长为1,k就是微商,导数。
all(abs(k)<1/1.5)
ans =
logical
1
可以看出,结果为1,也就是说,在[50,60]内,导函数的取值是⼩于1:1.5,符合要求。结语
最后欢迎⼤家点赞 ,收藏 ,转发 ,
如有问题、建议,请您在评论区留⾔ 哦。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论