发布企业信息

Matlab 符号对象和符号表达式

作者:未知  信息来源:未知  2006-1-26

字体大小:  网友评论  进入论坛  

2中,符号计算所依赖的Symbolic Math Toolbox 1。3的符号计算工具包已升级为2。1版采用全新的数据结构、面向对象编程和重载技术,使得符号计算和数值计算在形式和风格上浑然统一。1 符号对象和符号表达式6。...


    MATLAB4.2中,符号计算所依赖的Symbolic Math Toolbox 1.0版是一个过渡性产品。1.0版中的几乎所有指令都已经被废止。而今MATLAB5.3的符号计算工具包已升级为2.1版,它的工作原动机是Maple V5。2.1版采用全新的数据结构、面向对象编程和重载技术,使得符号计算和数值计算在形式和风格上浑然统一。


6.1 符号对象和符号表达式
6.1.1 符号对象的生成和使用

【 * 例 6.1.1 -1 】符号常数形成中的差异
a1=[1/3,pi/7,sqrt(5),pi+sqrt(5)] %a1 是数值常数 <1>
a2=sym ([1/3,pi/7,sqrt(5),pi+sqrt(5)]) % 最接近的有理表示 <2>
a3=sym ([1/3,pi/7,sqrt(5),pi+sqrt(5)],'e') % 带估计误差的有理表示 <3>
a4=sym('[ 1/3,pi/7,sqrt(5),pi+sqrt(5)]') % 绝对准确的符号数值表示 <4>
a24=a2-a4
a1 =
0.3333 0.4488 2.2361 5.3777
a2 =
[ 1/3, pi/7, sqrt(5), 6054707603575008*2^(-50)]
a3 =
[ 1/3-eps/12, pi/7-13*eps/165, sqrt(5)+137*eps/280, 6054707603575008*2^(-50)]
a4 =
[ 1/3, pi/7, sqrt(5), pi+sqrt(5)]
a24 =
[ 0, 0, 0, 189209612611719/35184372088832-pi-5^(1/2)]

【 * 例 6.1.1 -2 】演示:几种输入下产生矩阵的异同。
a1=sym([1/3,0.2+sqrt(2),pi]) % 产生 符号数组 <1>
a2=sym('[1/3,0.2+sqrt(2),pi]') % 产生 符号数组 <2>
a3=sym('[1/3 0.2+sqrt(2) pi]') %2.1 版中产生 符号数组 <3>
a1_a2=a1-a2 % 为比较 a1,a2
a1 =
[ 1/3, 7269771597999872*2^(-52), pi]
a2 =
[ 1/3, 0.2+sqrt(2), pi]
a3 =
[ 1/3, 0.2+sqrt(2)pi]
a1_a2 =
[ 0, 1.4142135623730951010657008737326-2^(1/2), 0]

【 * 例 6.1.1 -3 】 把字符表达式转换为符号变量
y=sym('2*sin(x)*cos(x)') % 把字符表达式转换为符号变量
y=simple(y) % 按规则把已有的 y 符号表达式化成最简形式
y =
2*sin(x)*cos(x)
y =
sin(2*x)

【 * 例 6.1.1 -4 】用符号计算验证三角等式
syms fai1 fai2;y=simple(sin(fai1)*cos(fai2)-cos(fai1)*sin(fai2))
y =
sin(fai1-fai2)

【 * 例 6.1.1 -5 】求矩阵 的行列式值、逆和特征根
syms a 11 a 12 a 21 a 22;A=[a11,a12;a21,a22]
DA=det(A),IA=inv(A),EA=eig(A)
A =
[ a11, a12]
[ a21, a22]
DA =
a11*a22-a12*a21

IA =
[ a22/(a11*a22-a12*a21), -a12/(a11*a22-a12*a21)]
[ -a21/(a11*a22-a12*a21), a11/(a11*a22-a12*a21)]

EA =
[ 1/2*a11+1/2*a22+1/2*(a11^2-2*a11*a22+a22^2+4*a12*a21)^(1/2)]
[ 1/2*a11+1/2*a22-1/2*(a11^2-2*a11*a22+a22^2+4*a12*a21)^(1/2)]

【 * 例 6.1.1 -6 】验证积分
syms A t tao w;yf=int(A*exp(-i*w*t),t,-tao/2,tao/2);Yf=simple(yf)
Yf =
2*A*sin(1/2*tao*w)/w


6.1.3 识别对象类别的指令

【 * 例 6.1.3 -1 】数据对象及其识别指令的使用。

(1)生成三种不同类型的矩阵,给出不同的显示形式
clear,a=1;b=2;c=3;d=4; % 产生四个数值变量
Mn=[a,b;c,d] % 利用已赋值变量构成数值矩阵
Mc='[a,b;c,d]' % 字符串中的 a,b,c,d 与前面输入的数值变量无关
Ms=sym(Mc) %Ms 是一个符号变量,它与前面各变量无关。
Mn =
1 2
3 4
Mc =
[a,b;c,d]
Ms =
[ a, b]
[ c, d]

(2)三种矩阵的大小不同
SizeMn=size(Mn),SizeMc=size(Mc),SizeMs=size(Ms)
SizeMn =
2 2
SizeMc =
1 9
SizeMs =
2 2

(3)用 class 获得每种矩阵的类别
CMn=class(Mn),CMc=class(Mc),CMs=class(Ms)
CMn =
double
CMc =
char
CMs =
sym

(4)用 isa 判断每种矩阵的类别(若返回 1 ,表示判断正确)
isa(Mn,'double'),isa(Mc,'char'),isa(Ms,'sym')
ans =
1
ans =
1
ans =
1

(5)利用 whos 观察内存变量的类别和其它属性
whos Mn Mc Ms % 观察三个变量的类别和属性
Name Size Bytes Class
Mc 1x9 18 char array
Mn 2x2 32 double array
Ms 2x2 408 sym object
Grand total is 21 elements using 458 bytes


6.1.4 符号表达式中自由变量的确定

【 * 例 6.1.4 -1 】对独立自由符号变量的自动辨认。

(1)生成符号变量
syms a b x X Y;k=sym('3');z=sym('c*sqrt(delta)+y*sin(theta)');
EXPR=a*z*X+(b*x^2+k)*Y;

(2)找出 EXPR 中的全部自由符号变量
findsym(EXPR) % 除常数符号 k 外的所有独立符号变量都被列出
ans =
X, Y, a, b, c, delta, theta, x, y

(3)在 EXPR 中确定一个自由符号变量
findsym(EXPR,1)
ans =
x

(4)在 EXPR 中确定 2 个和 3 个自由变量时的执行情况
findsym(EXPR,2),findsym(EXPR,3)
ans =
x,y
ans =
x,y,theta

【 * 例 6.1.4 -2 】 findsym 确定自由变量是对整个矩阵进行的。
syms a b t u v x y;A=[a+b*x,sin(t)+u;x*exp(-t),log(y)+v]
findsym(A,1)
A =
[ a+b*x, sin(t)+u]
[ x*exp(-t), log(y)+v]
ans =
x

分页:
Google


推荐图文

广告

机械热点图文

  • 数控车床加工编程典型实例分析2
  • 内螺纹车削加工——数控车床编程实例42
  • 子程序编程方法-数控车床编程实例36
  • 塑料模具动画演示

机械风云人物

Copyright © 2004 51base.com Inc. All rights reserved.

无忧基地 版权所有│粤ICP备06098418号│XHTML | CSS

客服:+86-755-2212 2202 工作时间:周1~5 10点~16点

感谢中国网络提供带宽支持

《网络营销技巧》