matlab符号微积分及应用举例

在上一节,小编主要和大家分享了matlab中的一种特殊的数据类型——符号对象,本节也将围绕符号对象展开,主要会讲述符号对象在微分中的应用。
一、符号函数的极限
求符号函数极限的命令为limit ,其调用格式为: limit(f,x,a)即求函数f关于变量x在a点的极限。对于 limit函数,还有另一种调用格式,用来求单边极限:limit(f,x,a,‘right’)右极限;limit(f,x,a,‘left’)左极限
例、求当n趋于无穷时,(1+1/n)^n的值。

>> syms n;
>> g=(1+1/n)^n;
>> limit(g,n,inf)
ans = 
exp(1)

exp(1)即自然常数1。
上述的方法可以用来解决函数极限相关的问题,一般在研究相关问题时,可以做出函数的图像,更直观的反应出极限值。
例、求当x趋于0时,函数y=sin(x^2)exp(x)的值,并会出相应图像观察。
exp(x)表示e^x.
(例子与代码来源于https://jingyan.baidu.com/article/d621e8da4a4d592864913f6f.html)

syms x
y=sin(x^2)*exp(x);
limy=limit(y,x,0)
plot([-2:0.01:2],subs(y,x,[-2:0.01:2]),'r','LineWidth',2);hold on
plot(xlim,double(limy)*[1,1],'k--')

在这里插入图片描述注:关于subs函数,其作用是将符号表达式中的某些符号变量替换为指定的新的变量,在此处不多做讲解,具体可参考这篇文章:https://blog.csdn.net/guyuealian/article/details/53997490
二、符号函数的导数
MATLAB中求导函数为:diff(f,x,n),即求函数f关于变量x的n阶导数。
例、求解函数y=sin(x^2)exp(x)的一阶导数并绘图。

syms x
y=sin(x^2)*exp(x);
k=diff(y,x,1) 
k = 
sin(x^2)*exp(x) + 2*x*cos(x^2)*exp(x)
fplot(k,[1,10])

在这里插入图片描述注:fplot也是绘图函数的一种,主要用于绘制已经定义的函数的图像,例如本例中k = sin(x^2)exp(x) + 2xcos(x^2)exp(x),关于具体用法,可以自己百度学习,这里也就不多讲述
三、符号函数的积分
函数积分主要分为定积分和不定积分两类,matlab也有对应函数求解积分问题。
不定积分:int(f,x)即求函数f对变量x的不定积分
定积分:int(f,x,a,b)其中,a、b分别表示定积分的下限和上限。
注:当函数f关于变量x在闭区间[a,b] 可积时,函数返回一个定积分结果;当a、b中有一个是inf时,函数返回一个广义积分;当a、b中有一个符号表达式时,函数返回一个符号函数。
本节讲述的三个函数用法都比较简单,但涉及到实际问题时,可能需要从多方面思考,下面的例子是一个比较综合的例子(涉及到曲线拟合、绘图、函数微分的知识),希望对读者有所帮助。
例、根据实际测量,得到河流某处宽 600m ,其横截面不同位置某一时刻的水深如下表所示。

x050100150200250300350400450500550600
h(x)4.44.54.64.84.95.15.45.25.55.24.94.84.7

(1)若此刻水流的流速为 0.6m/s ,试估计该河流此刻的流量。
(2)已知x方向 [50,60] 区间为坡式护岸的下部护脚部分,根据相关堤防设计规范,抛石护岸护脚坡度应缓于 1:1.5 (正切值),请估计水流冲刷是否已破坏该区域的护脚。
分析(1):由于题设并没有给出河宽与水深的函数关系,而只给出了一些相关数据,因此,首先要拟合出河床曲线,依据拟合函数,然后进行定积分,计算出河流横截面,即可估计流量。

>> 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

在这里插入图片描述注:函数polyfit与polyval都在之前的的推文中讲过,有需要者可以参考之前的推文“Matlab多项式计算”和“数学建模与MATLAB–插值与拟合”,对于poly2sym,该函数是把系数组转换成符号多项式,因为用polyfit拟合后,返回值是一个系数组。
分析(2):看似本问题与题设无关,但实际分析后就会发现,第一问拟合出的曲线反应的是河宽与水深的关系,如果将h(x)全部加负号,那么曲线就是河床曲线,那么计算其导函数,并判断相应范围内导函数的取值是否大于 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];
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;
eval(yii)
ans =
   -0.0031   -0.0031   -0.0031   -0.0031   -0.0031   -0.0032   -0.0032   -0.0032   -0.0032   -0.0032   -0.0032

在这里插入图片描述可以看出,范围内的导数全都全都小于1:1.5,即水流冲刷还没有破坏该区域的护脚。
本节内容就到此结束,下节将推出如何用matlab处理一些级数相关的数学问题,敬请期待!

关于MATLAB的学习:

大家可以关注我们的知乎专栏——数据可视化和数据分析中matlab的使用:
https://zhuanlan.zhihu.com/c_1131568134137692160

欢迎大家加入我们的MATLAB学习交流群:
953314432
扫码关注我们
发现更多精彩
在这里插入图片描述

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值