- 在线时间
- 677 小时
- 最后登录
- 2021-3-24
- 注册时间
- 2015-11-19
- 听众数
- 142
- 收听数
- 1
- 能力
- 140 分
- 体力
- 13629 点
- 威望
- 11 点
- 阅读权限
- 200
- 积分
- 9762
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 3541
- 主题
- 2983
- 精华
- 95
- 分享
- 0
- 好友
- 404
升级   95.24% TA的每日心情 | 开心 2017-1-9 14:34 |
---|
签到天数: 272 天 [LV.8]以坛为家I
- 自我介绍
- 吃吃吃
 群组: 乐考无忧 群组: 2014国赛优秀论文解析 群组: 2016美赛冲刺培训 群组: 2016国赛优秀论文解析 群组: 2016国赛备战群组 |
你是不是认为微积分就是一个洪水猛兽??一提微积分就头疼呢??不过有了MATLAB你头也不疼了,胃口也好了。神马都不怕了~~(听着像广告呢!!)不过确实啊,MATLAB确实能帮助你节省很多时间。不过我还是建议您好好学习微积分这门课程,如果学习过不知道都学了什么建议您观看,MIT Strang教授的微积分重点课程。好了我们言归正传。首先我们看看微分部分。
MATLAB与微分
diff函数用以演算一函数的微分项,相关的函数语法有下列4个:
diff(f)传回f对预设独立变数的一次微分值
diff(f,'t') 传回f对独立变数t的一次微分值
diff(f,n) 传回f对预设独立变数的n次微分值
diff(f,'t',n) 传回f对独立变数t的n次微分值
diff这个函数是靠输入的引数决定是以数值或是符号微分,如果引数为向量则执行数值微分,如果引数为符号表示式则执行符号微分。
我们还是用例子来说明上面这些函数的命令。求符号表达式f=x^2+y^3+3xy对x的一阶导数,对y的二阶导数,对x和y的混合导数。
代码:
f=sym('x^2+y^3+3*x*y')
r1=diff(f) % f的一阶导数,默认时自变量为x
r2=diff(f,'y',2) % f对y的二阶导数
r3=diff(diff(f,'x'),'y') % f对x和y的混合导数,先对x 一阶导数,再求对y的一阶导数。
建议先用手计算一下然后检查对不对~!!!
再对下面三个式子自行练习一下。
![]()
在附加一个程序jacobian(f,v)
![]()
例如求符号表达式f和g的jacobian矩阵。
代码:
syms x y z
f=[x*y*z;y;x+z]
g=x+z
v=[x y z] %表达式f和g,符合向量v
r4=jacobian(f,v)
r5=jacobian(g,v) %计算了f和g的jiacobian矩阵
MATLAB与积分
int函数用以演算一函数的积分项, 这个函数要找出一符号式 F使得diff(F)=f。如果积分式的解析式 (analytical form, closed form)不存在的话或是MATLAB无法找到,则 int传回原输入的符号式。相关的函数语法有下列 4个:
int(f) 传回f对预设独立变数的积分值
int(f,'t') 传回f对独立变数t的积分值
int(f,a,b) 传回f对预设独立变数的积分值,积分区间为[a,b],a和b为数值式
int(f,'t',a,b) 传回f对独立变数t的积分值,积分区间为[a,b],a和b为数值式
int(f,'m','n') 传回f对预设变数的积分值,积分区间为[m,n],m和n为符号式
通过下面代码熟悉上面的命令。
代码:
syms x y z;
f=x*y*z;
g=sin(x)+2*cos(y);
r6=int (f)
r7=int(f,z)
r8=int(g,0,pi)
r9=int(g,y,0,pi)
自行练习巩固一下。
![]()
再添加几个与微分非常相似的命令。
极限符号
Limit(f,x,a) 返回符号表达式f当x趋向于a时的极限
Limit(f,a) 返回符号表达式f由findsym(f)返回独立变量趋向于a时的极限
Limit(f) 返回符号表达式f由findsym(f)返回独立变量在a=0时的极限
Limit(f,x,a,’right’) 右极限
Limit(f,x,a,’left’) 左极限
代码:
limit(sin(x)/x)
limit(1/x,x,0,'right')
limit(1/x,x,0,'left')
syms h
limit((sin(x+h)-sin(x))/h,h,0)
级数和
symsum(s,t,a,b) ——表示s 中的符号变量t 从a 到b 的级数和(t 缺省时设定为x 或 最接近x 的字母)
代码:
syms x k
symsum(1/x,1,3)
s1=symsum(1/x^2,1,inf)
s2=symsum(x^k,k,0,inf)
泰勒(Taylor)多项式
taylor(f,n,a) ——函数f 对符号变量x (或最接近字母x 的符号变量)在a 点的n-1阶泰勒多项式(n 缺省时值为6,a 缺省值为0)
代码:
taylor(sin(x))
f=log(x)
s=taylor(f,4,2)
好像差不多了~~ 首先我需要解释一下,这些代码我都记住了吗??没有!~~ 不过您也发现了,代码的语法形式都差不多,记住一个剩下的您稍微理解一下就行了。还有就是不用都记住这些代码的,MATABL里最好的功能help~!!!当然我个人觉得这些符号背后的数学意义才是你真正应该时刻记在脑子里的东西!!
在最后小小的总结一下吧。
我对MATLAB水平的理解是:
没入门-----佩服知道打开matlab会在命令窗口里打1+1等命令就是高手;
菜鸟-----谁会MALAB的小技巧就是高手;
专业入门 -----学习了编程语言,熟悉m文件编辑技巧。这是专业大专和本科水平中认为厉害的。这个阶段是练基本功,就像厨师练刀功一样。
有方向 ----开始涉入应用的某个专业方向,这时候你发现,语言/操作系统等等只是基本功,一种工具而已。练完刀功,开始学某个菜系而已。研究生水平。
方向上有较深理解 ----在某个方向上有比较深的理解,很多问题能透过表象看本质了。博士水平。这时候学计算机和计算机本身关系不大了,关键在于相关的数学。
上面的是我的出浅的理解。当然我现在的水准就是跨国菜鸟水准在专业入门水准里扑腾。我能一下写出这么多文章是和以前的积累分不开的。
这篇里主要谈论matlab的学习,但我想,任何学习都是相通的,它对matlab的学习有用也会对别的程序会有帮助的。本人水平有限,所谈的是自己的一些体会和见解,希望不要误导到您。在多年的学习过程中,我始终认为,学习没有捷径,少走或不不走弯路就是捷径。
|
zan
|