matlab符号运算(二)
六大常见符号运算
因式分解、展开、合并、简化及通分等
计算极限 limit(f,x,a): 计算 lim f ( x )
xa
limit(f,a): 计算默认自变量趋向于a时f的极限 limit(f): 计算 a=0 时的极限 limit(f,x,a,’right’):右极限 limit(f,x,a,’left’):左极限
1 2 n 1 n
,以及其前10项的部分和。
>> syms n >> S=symsum(1/n^2,n,1,inf) >> S10=symsum(1/n^2,n,1,10)
x 2 n 1 n
S=1/6*pi^2 S10=1968329/1270080
例:求函数级数
S
>> syms n x >> S=symsum(x/n^2,n,1,inf)
符号矩阵中元素的引用和修改
>> A=sym(’[1+x, sin(x); 5, exp(x)]’) >> A(1,2) >> A(2,2)=sym(’cos(x)’)
Matlab 符号运算(二)
符号矩阵的基本运算
符号矩阵的基本运算与数值矩阵的基本运算相类似。
1) 基本运算符:+、-、*、\、/、
ans=10
ans=2*x+y
ans=10 ans=[2+y,4+y,6+y] ans=[7 10 13]
ans=3*a+b
?
Matlab 符号运算(二)
符号矩阵
使用sym函数直接生成
>> A=sym(’[1+x, sin(ห้องสมุดไป่ตู้); 5, exp(x)]’)
将数值矩阵转化成符号矩阵
>> B=[2/3, sqrt(2); 5.2, log(3)] >> C=sym(B) 能否用sym(‘B’)?
Matlab 符号运算(二)
六大常见符号运算
因式分解、展开、合并、简化及通分等
计算极限 计算导数 计算积分 符号求和
symsum(f,v,a,b): 求和
f (v )
va
b
symsum(f,a,b): 关于默认自变量 求和。
Matlab 符号运算(二)
例:求级数 S
S=1/6*x*pi^2
Matlab 符号运算(二)
六大常见符号运算
因式分解、展开、合并、简化及通分等
计算极限 计算导数 计算积分 符号求和
解代数方程和微分方程(见实验三、六)
Matlab 符号运算(二)
其它运算
复合函数计算:compose
compose(f,g): 返回f(g(y)),其中f=f(x),g=g(y), x,y 分别是 f 和 g 的默认自变量。 compose(f,g,z):返回f(g(z)),其中x,y 分别是 f,g 的默认自变量,最后用符号变量z代替y。 compose(f,g,v,z):返回f(g(z)),v为f中指定的自变量, 令v=g(z),代入 f=f(v)。 compose(f,g,v,w,z):返回f(g(z)),其中v,w分别为f,g 的指定自变量,即将v=g(w)代入f(v),最后用z代替w。
>> C=diff(y,x,2)
>> D=diff(y,a,2)
Matlab 符号运算(二)
六大常见符号运算
因式分解、展开、合并、简化及通分等
计算极限 计算导数 计算积分 int(f,v,a,b):计算定积分
b
a
f (v)dv
int(f,a,b): 计算 f 关于默认自变量 的定积分
>> a=sym(‘a’); >> b=sym(‘5’); >> c=sym(5); b、c有区别吗? hint:help sym
Matlab 符号运算(二)
相关函数 findsym: 查找符号表达式中的符号变量 findsym(f)
按字母顺序列出符号表达式 f 中的所有自由变量
findsym(f,N) 列出 f 中距离 x 最近的 N 个自由变量(i,j 除外)
Matlab 符号运算(二)
例: f cos(x / t ), g sin(y/u)
>> >> >> >> >> >> >> >> >> >> syms x y z u t f=cos(x/t); y=sin(y/u); compose(f,g) compose(g,f) compose(f,g,z) compose(f,g,x,z) compose(f,g,t,z) compose(f,g,t,y,z) compose(f,g,t,u) compose(f,g,t,u,z) ans=cos(sin(y/u)/t)
Matlab 符号运算(二)
六大常见符号运算
因式分解、展开、合并、简化及通分等
因式分解:factor >> syms x >> f=x^6 +1 >> s=factor(f)
s =(1+x^2)*(x^4-x^2+1)
factor 也可用于正整数的分解
Matlab 符号运算(二)
大整数的分解
Matlab 符号运算(二)
例:求极限 L lim
ln( x h) ln( x ) h 0 h n x M lim 1 n n
L=1/x M=exp(-x)
>> syms h n x >> L=limit((log(x+h)-log(x))/h,h,0) >> M=limit((1-x/n)^n,n,inf)
Matlab 符号运算(二)
例: f ( x) 2 x y
>> >> >> >> >>
>> >> >> >> >> >> >> >>
syms x y f=2*x+y; x=3,y=4; subs(f) subs(f,x,’a’)
syms x y a b f=2*x+y; subs(f,[x,y],[3,4]) subs(f,{x,y},{3,4}) subs(f,x,[1:3]) subs(f,{x,y},{[1:3],[5:7]}) subs(f,{x,y},{a+b,a-b}) subs(f,{x,y},{x+y,x-y})
^ 、三角函数与反三角函数: .*、.\、./、.^、’ 、.’sin、cos、 2)
tan 、… … 3) 指数、对数函数:sqrt、exp、log、… …
4) 复数函数:real、imag、conj、 abs 5) 矩阵函数:det、inv、rank、 … … (没有norm) 6) 矩阵元素的抽取:diag、tril、triu
findsym(f,1)
Matlab 符号运算(二)
简化函数: simple 和 simplify
simple(f): 对 f 尝试多种不同的算法简化, 返回其中最短的简化形式;
[R,HOW]=simple(f): R为f的最短简化形式, HOW中记录的为简化过程中使用的主要方法。
simple函数示例 f 2*cos(x)^2-sin(x)^2 (x+1)*x*(x-1) x^3+3*x^2+3*x+1 x^3-x (x+1)^3 R 3*cos(x)^2-1 HOW simplify combine(trig) factor
中所有出现的相同的变量,并进行简化计算。 subs(f,x,a):用 a 替换 f 中的 x ;a 是可以是 数/ 数值变量/表达式 或 符号变量/表达式。 若x与a为相同大小的向量或矩阵,则用a中相应的元 素替换x中的元素; 若f,x为标量,而a是向量或矩阵,则f与x将扩展为 与a相同形状的向量或矩阵。
int(f,v):计算不定积分 f ( v )dv int(f):计算 f 关于默认自变量 的不定积分
Matlab 符号运算(二)
x2 1 dx, 例:求积分 I 2 2 ( x 2 x 2)
J
>> >> >> >> >> >> >>
/2
0
cos x dx, sin x cos x
例: >> a=sym('a');x=sym('x');k=sym('3'); >> f=k*x+a; >> findsym(f) 默认自变量=findsym(f,1)
ans=a,x
Matlab 符号运算(二)
相关函数 subs:符号替换 subs(f): 用当前工作空间中存在的变量值,替换 f
Matlab 符号运算(二)
Matlab 符号运算介绍
Matlab 符 号 运 算 是 通 过 符 号 数 学 工 具 箱 (Symbolic Math Toolbox)来实现的。
符号对象的建立:sym 和 syms
例: >> syms x y z <==> >> x=sym(‘x’); >> y=sym(‘y’); >> z=sym(‘z’);