matlab符号微积分微分方程
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
matlab符号微积分微分方程
符号极限、微积分和符号方程的求解 1.语法:
sym(…表达式?) %创建符号表达式
f1=sym('a*x^2+b*x+c')
f1 =
a*x^2+b*x+c
2.使用syms命令创建符号变量和符号表达式
语法:
syms arg1 arg2 …,参数 %把字符变量定义为符号变量的简洁形式
syms a b c x %创建多个符号变量
f2=a*x^2+b*x+c %创建符号表达式
3.4.1符号极限
假定符号表达式的极限存在,Symbolic Math Toolbox提供了直接求表达
式极限的函数limit,函数limit的基本用法如表3.2所示。
表3.2 limit函数的用法
表达式函数格式说明
limf(x) limt(f) 对x求趋近于0的极限 x,0
limf(x) limt(f,x,a) 对x求趋近于a的极限,当左右极限不相等时x,a极限不存在。
limf(x) limt(f,x,a, 对x求左趋近于a的极限 ,x,aleft)
limf(x) limt(f,x,a, 对x求右趋近于a的极限,x,aright)
【例3.14】分别求1/x在0处从两边趋近、从左边趋近和从右边趋近的三个极限值。
f=sym('1/x')
limit(f,'x',0) %对x求趋近于0的极限
ans =
NaN
limit(f,'x',0,'left') %左趋近于0
ans =
-inf
limit(f,'x',0,'right') %右趋近于0
ans =
inf
程序分析:当左右极限不相等,表达式的极限不存在为NaN。
3.4.2符号微分
函数diff是用来求符号表达式的微分。
语法:
diff(f) %求f对自由变量的一阶微分
diff(f,t) %求f对符号变量t的一阶微分
diff(f,n) %求f对自由变量的n阶微分
diff(f,t,n) %求f对符号变量t的n阶微分
2【例3.15】已知f(x),ax+bx+c,求f(x)的微分。
f=sym('a*x^2+b*x+c')
f =
a*x^2+b*x+c
diff(f) %对默认自由变量x求一阶微分
ans =
2*a*x+b
diff(f,'a') %对符号变量a求一阶微分
ans =
x^2
diff(f,'x',2) %对符号变量x求二阶微分
ans =
2*a
diff(f,3) %对默认自由变量x求三阶微分
ans =
微分函数diff也可以用于符号矩阵,其结果是对矩阵的每一个元素进行微分运算。
2,,2xt【例3.15续】对符号矩阵求微分。 ,,xtsin(x)e,,,,
syms t x
g=[2*x t^2;t*sin(x) exp(x)] %创建符号矩阵
g =
[ 2*x, t^2] [ t*sin(x), exp(x)]
diff(g) %对默认自由变量x求一阶微分
ans =
[ 2, 0] [ t*cos(x), exp(x)]
diff(g,'t') %对符号变量t求一阶微分
ans =
[ 0, 2*t]
[ sin(x), 0]
diff(g,2) %对默认自由变量x求二阶微分
ans =
[ 0, 0] [ -t*sin(x), exp(x)]
diff还可以用于对数组中的元素进行逐项求差值。【例3.15续】可以使用
diff计算向量间元素的差值。
x1=0:0.5:2;
y1=sin(x1)
y1 =
0 0.4794 0.8415 0.9975 0.9093
diff(y1) %计算元素差
ans =
0.4794 0.3620 0.1560 -0.0882 程序分析:计算出的差值比原来的向量少一列。
3.4.3符号积分
积分有定积分和不定积分,运用函数int可以求得符号表达式的积分。语法: int(f,?t?) %求符号变量t的不定积分
int(f,?t?,a,b) %求符号变量t的积分
int(f,?t?,?m?,?n?) %求符号变量t的积分
说明:t为符号变量,当t省略则为默认自由变量;a和b为数值,[a,b]为
积分区间;m和n为符号对象,[m,n]为积分区间;与符号微分相比,符号积
分复杂得多。因为函数的积分有时可能不存在,即使存在,也可能限于很多条件,MATLAB无法顺利得出。当MATLAB不能找到积分时,它将给出警
告提示并返回该函数的原表达式。
cos(x)cos(x)【例3.16】求积分和。 ,,,
f=sym('cos(x)');
int(f) %求不定积分
ans =
sin(x)
int(f,0,pi/3) %求定积分
ans =
1/2*3^(1/2)
int(f,'a','b') %求定积分
ans =
sin(b)-sin(a)
int(int(f)) %求多重积分
ans =
-cos(x)
diff和int命令,也可以直接对字符串f进行运算:
f='cos(x)';
2,,2xt【例3.16续】求符号矩阵的积分。 ,,xtsin(x)e,,,,syms t x
g=[2*x t^2;t*sin(x) exp(x)] %创建符号矩阵
g =
[ 2*x, t^2] [ t*sin(x), exp(x)]
int(g) %对x求不定积分
ans =
[ x^2, t^2*x] [ -t*cos(x), exp(x)]
int(g,'t') %对t求不定积分