[ (2 x - 1) (x - 1)]
[ ]
[ 4 ]
[---- 3 x + 4 ]
[ 2 ]
[ x ]
(2)请读者自己运行以下指令,显示结果应与指令 <3> 相同。
pretty(simplify(n./d)) % 注意这里用的是“数组除”,而不是“矩阵除”
[ 3 2 ]
[ x + 5 x - 3 ]
[3/2 -----------------]
[ (2 x - 1) (x - 1)]
[ ]
[ 4 ]
[---- 3 x + 4 ]
[ 2 ]
[ x ]
【 * 例 6.2.1 -5 】简化
(1)运用 simplify 简化(即使多次运用 simplify 也不能得到最简形式。)
syms x;f=(1/x^3+6/x^2+12/x+8)^(1/3);
计算机教程Matlab 符号表达式和符号函数的操作来自www.itwen.comIT WEN计算机教程网
sfy1=simplify(f),sfy2=simplify(sfy1)
sfy1 =
((2*x+1)^3/x^3)^(1/3)
sfy2 =
((2*x+1)^3/x^3)^(1/3)
(2)运用 simple 简化
g1=simple(f),g2=simple(g1)
g1 =
(2*x+1)/x
g2 =
2+1/x
【 * 例 6.2.1 -6 】简化
syms x;ff=cos(x)+sqrt(-sin(x)^2);
ssfy1=simplify(ff),ssfy2=simplify(ssfy1)
ssfy1 =
cos(x)+(-sin(x)^2)^(1/2)
ssfy2 =
cos(x)+(-sin(x)^2)^(1/2)
gg1=simple(ff),gg2=simple(gg1)
gg1 =
cos(x)+i*sin(x)
gg2 =
exp(i*x)
6.2.2 符号函数的求反和复合
【 * 例 6.2.2 -1 】求 的反函数
syms x;f=x^2;g=finverse(f)
Warning: finverse(x^2) is not unique.
> In E:\MAT53\toolbox\symbolic\@sym\finverse.m at line 43
g =
x^(1/2)
fg=simple(compose(g,f)) % 验算 g(f(x)) 是否等于 x
fg =
x
【 * 例 6.2.2 -2 】求 的复合函数
(1)自变量由机器确定
syms x y u fai t;f=x/(1+u^2);g=cos(y+fai);fg1=compose(f,g)
fg1 =
cos(y+fai)/(1+u^2)
(2)指定自变量
fg2=compose(f,g,u,fai,t)
fg2 =
x/(1+cos(y+t)^2)
6.2.3 置换及其应用
6.2.3.1 自动执行的子表达式置换指令
【 * 例 6.2.3 .1-1 】演示子表达式的置换表示。
clear all,syms a b c d W;[V,D]=eig([a b;c d]);
[RVD,W]=subexpr([V;D],W) %<2>
RVD =
[ -(1/2*d-1/2*a-1/2*W)/c, -(1/2*d-1/2*a+1/2*W)/c]
[ 1, 1]
[ 1/2*d+1/2*a+1/2*W, 0]
[ 0, 1/2*d+1/2*a-1/2*W]
W =
(d^2-2*a*d+a^2+4*b*c)^(1/2)
6.2.3.2 通用置换指令
【 * 例 6.2.3 .2-1 】用简单算例演示 subs 的置换规则。
(1)产生符号函数
syms a x;f=a*sin(x)+5;
(2)符号变量置换
f1=subs(f,'sin(x)',sym('y')) %<2>
f1 =
a*y+5
(3)符号常数置换
f2=subs(f,{a,x},{2,sym(pi/3)}) %<3>
f2 =
3^(1/2)+5
(4)双精度数值置换(即所有自由变量被双精度数值取代。取 a=2 , x=pi/3 )
f3=subs(f,{a,x},{2,pi/3}) %<4>
f3 =
6.7321
(5)数值数组置换之一(取 a=2 , x=0:pi/6:pi )
f4=subs(subs(f,a,2),x,0:pi/6:pi) %<5>
f4 =
5.0000 6.0000 6.7321 7.0000 6.7321 6.0000 5.0000
(6)数值数组置换之二(取 a=0:6 , x=0:pi/6:pi )
f5=subs(f,{a,x},{0:6,0:pi/6:pi}) %<6>
f5 =
5.0000 5.5000 6.7321 8.0000 8.4641 7.5000 5.0000
6.2.4 符号数值精度控制和任意精度计算
6.2.4.2 任意精度的符号数值
【 * 例 6.2.4 .2-1 】指令使用演示。
digits % 显示省缺符号数值计算相对精度
Digits = 32
p0=sym('(1+sqrt(5))/2'); %p0 为 (1+sqrt(5))/2 准确值
p1=sym((1+sqrt(5))/2) %p1 是 (1+sqrt(5))/2 在数值环境下的近似值
e01=vpa(abs(p0-p1)) % 在符号环境 32 位省缺精度下,观察 p0, p1 间误差
p1 =
7286977268806824*2^(-52)
e01 =
.543211520368250e-16
p2=vpa(p0) %p2 是 p0 在 32 位相对精度下的近似
e02=vpa(abs(p0-p2),64) % 在 64 位相对精度下,观察 p0, p2 间的误差
p2 =
1.6180339887498948482045868343657
e02 =
.61882279690820194237137864551377e-31
digits % 验证 vpa 变精度计算不影响全局的符号数值计算精度
Digits = 32
6.2.5 符号对象与其它数据对象间的转换
【 * 例 6.2.5 -1 】符号、数值间的转换。
phi=sym((1+sqrt(5))/2) % 把数值对象转换成符号常数
double(phi) % 把符号常数转换为双精度存储的数值
phi =
7286977268806824*2^(-52)
ans =
1.6180
【 * 例 6.2.5 -2 】各种多项式表示形式之间的转换
syms x;f=x^3+2*x^2-3*x+5; % 生成符号多项式
sy2p=sym2poly(f) % 由符号多项式产生数值系数行向量
p2st=poly2str(sy2p,'x') % 把系数行向量变成易读表示式
p2sy=poly2sym(sy2p) % 把数值系数行向量再转换为符号多项式
pretty(f,'x') % 显示符号多项式的易读表示形式
sy2p =
1 2 -3 5
p2st =
x^3 + 2 x^2 - 3 x + 5
p2sy =
x^3+2*x^2-3*x+5
3 2
x + 2 x - 3 x + 5
本篇文章共5页,此页为末页 首页