第5章MATLAB符号计算.doc
文本预览下载声明
第5章 MATLAB符号计算
Matlab本身并没有符号计算功能,1993年通过购买Maple的使用权后,开始具备符号运算的功能.符号运算的类型很多,几乎涉及数学的所有分支.
符号运算使用一种特殊的数据类型,称为符号对象(Symbolic Object),用字符串形式表达,但又不同于字符串(Char Array)。符号中的变量,函数和表达式都是符号对象。
5.1 符号对象的定义
5.1.1 建立符号变量
MATLAB提供了两个建立符号对象的函数:sym和syms,两个函数的用法不同。
1. sym函数
sym函数用来建立单个符号对象,一般调用格式为:
符号对象名=sym(符号字符串)
该函数可以建立一个符号对象,符号字符串可以是常量、变量、函数或表达式。
符号对象名=sym(num,’d’)
该函数将数值表达式num转化为符号表达式,数值用十进制表示;
试比较分析下列命令: a=pi^2, b=’pi^2’, c=sym(pi^2),d= sym(pi^2,’d’), e=sym(b)
a=pi^2 %结果为一个数
a =
9.8696
b=pi^2 %结果为一个字符串
b =
pi^2
c=sym(pi^2) %数值转化为符号对象,有理表示!
c =
5556093337880030*2^(-49)
c=sym(pi^2,d) %数值转化为符号对象,十进制表示!
c =
9.8696044010893579923049401259050
e=sym(b) %或e=sym(pi^2) 字符串转化为符号对象
e =
pi^2
2. syms函数
函数sym一次只能定义一个符号变量,使用不方便。MATLAB提供了另一个函数syms,一次可以定义多个符号变量(对象)。syms函数的一般调用格式为:
syms 符号变量名1 符号变量名2 … 符号变量名n
用这种格式定义符号变量时不要在变量名上加字符串分界符(‘),变量间用空格而不要用逗号分隔。
syms x y z
h=x^3+2*y^2+e
h =
x^3+2*y^2+pi^2
5.1.2 建立符号表达式
含有符号对象的表达式称为符号表达式。建立符号表达式有以下3种方法:
(1)利用单引号来生成符号表达式。
(2)用sym函数建立符号表达式。
(3)使用已经定义的符号变量组成符号表达式。
A=[c b;e-h h-x^3]
A =
[ 5556093337880030*2^(-49), pi^2]
[ -x^3-2*y^2, 2*y^2+pi^2]
5.1.3 计算精度和数据类型转换
利用函数sym可以将数值表达式变换成它的符号表达式,函数numeric或eval可以将符号表达式变换成数值表达式。
double(s) 将符号对象转化为双精度数值
char(s) 将符号对象转化为字符串
digits(n) 将数值计算精度设为n位;
x=vpa(s) 求s的数值结果
x=vpa(s,n) 采用n位计算精度求s的数值结果
2^10000
ans =
Inf
a=sym(2);b=a^10000
b =
199506311688075838488374216268…709376 %很长的整数,准确的,而不是近似的
vpa(b)
ans =
.19950631168807583848837421626836e3011
format long;pi^2,format short %用长格式显示pi的值,再恢复为短格式
ans =
9.86960440108936
试比较以下C=PI^2的显示结果。
c=sym(pi^2);
vpa(c,16) %16位
ans =
9.869604401089357
vpa(c) %32位,默认
ans =
9.8696044010893586188344909998761
vpa(c,100) %100位,高精度
ans =
9.869604401089358618834490999876151135313699407240790626413349376220044822419205243001773403718552232
vpa(c,2) %2位,低精度
ans =
9.6
double(c)
显示全部