matlab符号运算(二)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
K e
0
x2
dx
syms x f=(x^2+1)/(x^2-2*x+2)^2; I=int(f) I=3/2*atan(x-1)+1/4*(2*x-6)/(x^2-2*x+2) g=cos(x)/(sin(x)+cos(x)); J=int(g,x,0,pi/2) J=1/4*pi h=exp(-x^2); K=int(h,x,0,inf) K=1/2*pi^(1/2)
Matlab 符号运算(二)
Matlab 符号运算介绍
Matlab 符 号 运 算 是 通 过 符 号 数 学 工 具 箱 (Symbolic Math Toolbox)来实现的。
符号对象的建立:sym 和 syms
例: >> syms x y z <==> >> x=sym(‘x’); >> y=sym(‘y’); >> z=sym(‘z’);
^ 、三角函数与反三角函数: .*、.\、./、.^、’ 、.’sin、cos、 2)
tan 、… … 3) 指数、对数函数:sqrt、exp、log、… …
4) 复数函数:real、imag、conj、 abs 5) 矩阵函数:det、inv、rank、 … … (没有norm) 6) 矩阵元素的抽取:diag、tril、triu
中所有出现的相同的变量,并进行简化计算。 subs(f,x,a):用 a 替换 f 中的 x ;a 是可以是 数/ 数值变量/表达式 或 符号变量/表达式。 若x与a为相同大小的向量或矩阵,则用a中相应的元 素替换x中的元素; 若f,x为标量,而a是向量或矩阵,则f与x将扩展为 与a相同形状的向量或矩阵。
>> 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 关于默认自变量 的定积分
分式通分: numden
[N,D]=numden(f): N为通分后的分子,D为通分后的分母
Matlab 符号运算(二)
horner多项式:嵌套形式的多项式
例: f ( x ) x x
n n 1
x 1
x ( x ( x ( x 1) 1) ) 1
Matlab 符号运算(二)
例: >> 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
符号矩阵中元素的引用和修改
>> A=sym(’[1+x, sin(x); 5, exp(x)]’) >> A(1,2) >> A(2,2)=sym(’cos(x)’)
Matlab 符号运算(二)
符号矩阵的基本运算
符号矩阵的基本运算与数值矩阵的基本运算相类似。
1) 基本运算符:+、-、*、\、/、
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。
Matlab 符号运算(二)
符号表达式的建立
>> syms x >> f1=sin(x)+cos(x) >> f2=sym(’sin(x)+cos(x)’) >> f3=’sin(x)+cos(x)’ 用这种方法创建的符 号表达式对空格很敏 感,不要在字符间随 意添加空格! 推荐!
符号变量与符号常量
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)
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
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})
Matlab 符号运算(二)
六大常见符号运算
因式分解、展开、合并、简化及通分等
计算极限 计算导数 计算积分 符号求和
symsum(f,v,a,b): 求和
f (v )
va
b
symsum(f,a,b): 关于默认自变量 求和。
Matlab 符号运算(二)
例:求级数 S
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(x); 5, exp(x)]’)
将数值矩阵转化成符号矩阵
>> B=[2/3, sqrt(2); 5.2, log(3)] >> C=sym(B) 能否用sym(‘B’)?
diff(f,n),diff(f,’v’,n),diff(f,n,’v’): n次求导
Matlab 符号运算(二)
dy dy d2y d2y 例:设 y=sin(ax),求 A , B , C 2 , D 2 dx da dx da
>> syms a x >> y=sin(a*x) >> A=diff(y,x) >> B=diff(y,a) A=cos(a*x)*a B=cos(a*x)*x C=-sin(a*x)*a^2 D=-sin(a*x)*x^2
Matlab 符号运算(二)
六大常见符号运算
因式分解、展开、合并、简化及通分等
因式分解:factor >> syms x >> f=x^6 +1 >> s=factor(f)
s =(1+x^2)*(x^4-x^2+1)
factor 也可用于正整数的分解
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’):左极限
ans=sin(cos(x/t)/u)
ans=cos(sin(z/u)/t)
ans=cos(x/sin(z/u))
>> syms x >> L=limit(abs(x)/x,x,0,’left') >> R=limit(abs(x)/x,x,0, ’right')
L=-1
M=1
Matlab 符号运算(二)
六大常见符号运算
因式分解、展开、合并、简化及通分等
计算极限 计算导数 diff(f,’v’): 计算 f 关于变量 v 的导数 diff(f): 计算 f 关于默认自变量的导数
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)
Matlab 符号运算(二)
展开函数: expand
多项式展开
该函数经常用于多项式展开,也常用于三角函数、 指数函数和对数函数的展开中。 三角函数展开
Matlab 符号运算(二)
合并同类项: collect
collect(f,v): 按指定变量 v 的次数合并系数;
collect(f): 合并 f 中的默认自变量的各项系数。
cos(3*acos(x))
4*x^3-3*x
expand
Matlab 符号运算(二)
simplify(f): 简化函数
注:多次 使用 simple 可以达到最简表达。
Matlab 符号运算(二)
例:化简 f ( x ) 3 13 62 12 8
x x x
Matlab 符号运算(二)
>> 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 除外)
findsym(f,1)
Mwk.baidu.comtlab 符号运算(二)
简化函数: 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
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 符号运算(二)
符号对象建立时可以附加属性: real、positive 和 unreal
>> x=sym('x','real') >> k=sym('k','positive') >> x=sym('x','unreal') 表明 x 是实的 表明 k 是正的 去掉 x 的附加属性