符号语言简介.doc

上传人:wj 文档编号:4863396 上传时间:2023-05-07 格式:DOC 页数:13 大小:70KB
下载 相关 举报
符号语言简介.doc_第1页
第1页 / 共13页
符号语言简介.doc_第2页
第2页 / 共13页
符号语言简介.doc_第3页
第3页 / 共13页
符号语言简介.doc_第4页
第4页 / 共13页
符号语言简介.doc_第5页
第5页 / 共13页
符号语言简介.doc_第6页
第6页 / 共13页
符号语言简介.doc_第7页
第7页 / 共13页
符号语言简介.doc_第8页
第8页 / 共13页
符号语言简介.doc_第9页
第9页 / 共13页
符号语言简介.doc_第10页
第10页 / 共13页
符号语言简介.doc_第11页
第11页 / 共13页
符号语言简介.doc_第12页
第12页 / 共13页
符号语言简介.doc_第13页
第13页 / 共13页
亲,该文档总共13页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

符号语言简介.doc

《符号语言简介.doc》由会员分享,可在线阅读,更多相关《符号语言简介.doc(13页珍藏版)》请在冰点文库上搜索。

符号语言简介.doc

MATLAB符号语言工具箱应用简介

MATLAB具有符号数学工具箱,可以对符号表达式进行运算和处理。

基本运算包括复合、化简、微分、积分以及求解代数方程式、微分方程式等。

另外,还可以求解线性代数问题,如求解符号矩阵的逆、行列式、正则行的精确结果,找出符号矩阵的特征值而没有由数值计算引入的误差。

工具箱还支持可变精度运算,由于符号运算不产生数值运算产生的运算误差,可以在运算最后将数字代入结果,因此避免了中间运算的误差,能够以指定的精度返回结果。

符号数学工具箱的功能建立在Maple软件的基础上。

该软件最初是由加拿大的滑铁卢(Waterloo)大学开发的。

当用户要求MATLAB进行符号运算时,它就转入Maple去计算并将结果返回到MATLAB命令窗口。

因此,MATLAB中的符号运算是MATLAB处理数字功能的自然扩展。

1符号表达式

符号表达式是包括数字、代数或有理运算和符号变量的MATLAB字符串。

它不要求变量有预先确定的值。

符号方程式是含有等号的符号表达式。

符号矩阵是数组,其元素是符号表达式。

符号运算是使用已知的数学规则和给定的符号恒等式求解这些符号方程,它与代数和微积分所学到的求解方法完全一样。

(1)创建符号表达式

MATLAB用sym(‘’)命令建立符号表达式。

符号表达式表示成字符串,用单引号‘’括起来,以与数字变量或运算相区别。

否则,这些符号表达式几乎完全像MATLAB命令。

表B-1列有几则符号表达式和MATLAB等效表达式的例子。

表B-1符号表达式与等效的MATLAB表达式

符号表达式MATLAB符号表达式

‘1/(2*x^n)’

‘1/sqrt(2*x)’

‘cos(x^2)-sin(2*x)’

m=sym(‘[a,b;c,d]’)

f=int(‘x^3/sqrt(1-x)’,’a’,’b’)

MATLAB符号函数可让用户用多种方法来操作这些表达式。

例如,定义符号表达式:

y=sym('cos(x)')

y=

cos(x)

对符号表达式进行运算

c1=diff(y)%求微分

c1=

-sin(x)

(2)符号常量

不含变量的符号表达式叫做符号常量。

例如

f=sym('2*4-6')%定义符号表达式,不含符号变量

f=

2*4-6

求f的数值(进行数值运算):

f1=numeric(f)

f1=

2

进行符号运算:

f2=f+1

f2=

3

(3)符号变量

当字符表达式中含有多于一个的变量时,只有一个变量是独立变量,其余的文字符号作为常量处理。

如果用户不指定哪一个变量是独立变量,MATLAB将基于以下规则选择一个独立变量:

·除去i和j的小写字母,表达式中如果没有其他字母,选择x作为独立变量;

·如果有多个字符变量,选择在字母顺序中最接近x的字符变量;

·如果有相连的字母,选择在字母表中较后的那一个。

例如,键入:

diff('sin(x)+1')%只含有一个字符变量,该字符就是独立变量

ans=

cos(x)

键入:

diff('sin(a)+b')%含有两个字符变量,字母表中靠后的是独立变量

ans=

1

键入:

diff('3*y+z')%含有两个字符变量,接近x的是独立变量

ans=

3

2符号表达式运算

一旦建立了一个符号表达式,符号运算功能可以完成如提取表达式的一部分、合并两个表达式、求表达式的数值以及表达式的加、减、乘、除等运算。

(1)提取分子和分母

如果表达式是一个有理分式(两个多项式之比),或是可以展开为有理分式(包括那些分母为1的分式)可利用numden命令来提取分子或分母,必要时还可以进行表达式合并。

例如,

m=sym('x^2')%定义有理分式m

m=

x^2

(2)代数运算

很多标准的代数运算可以在符号表达式上执行,命令symadd,symsub,symmul和symdiv可以加、减、乘、除两个表达式,sympow将一个表达式表示为另一个表达式的幂次。

例如,

f='2*x-5'%定义符号表达式f

f=

2*x-5

g='x^2-x+7'%定义符号表达式g

g=

x^2-x+7

symadd(f,g)%求f+g

ans=

x+2+x^2

(3)高级运算

符号表达式的高级运算包括表达式的复合、求逆函数、求前n-1项和等。

其中,

·命令compose把f(x)和g(x)复合成f((g(x))。

例如,

f=sym('cos(x)')

f=

cos(x)

·命令finverse求表达式的逆函数。

表达式f(x)的逆函数g(x)满足g(f(x))=x。

命令finverse给出表达式的逆函数,如果解不唯一,就给出警告。

例如,

p=sym('e^x')

p=

e^x

键入:

finverse(p)

ans=

log(x)/log(e)

结果相当于ln(x),因为ln(e^x)=x。

·命令symsum求表达式的前n-1项和。

有下面四种形式:

f=sym('x^2')

f=

x^2

键入:

symsum(f)%求前x-1项和

ans=

1/3*x^3-1/2*x^2+1/6*x

(4)函数变换

MATLAB的符号运算功能,可以将符号表达式变换成数值或反之。

有些符号函数可返回数值。

命令sym可将MATLAB的一般(数值)表达式转换为符号表达式,前面已经作过介绍。

函数numeric的功能正好相反,它把一个符号常数(无变量符号表达式)变换为一个数值。

例如,

numeric('1+2^2')

ans=

5

3微分和积分

微分和积分是微积分学研究和应用的核心,并广泛地用在许多工程学科。

MATLAB符号运算功能可以解决许多这类问题。

(1)微分

符号表达式的微分利用命令diff完成,有下面四种形式:

p='a*x^2+b*x'%定义符号表达式p

p=

a*x^2+b*x

键入:

diff(p)%对缺省变量x求微分

ans=

2*a*x+b

(2)积分

符号运算的积分命令为int(f),其中f是一个符号表达式。

积分的目的是求出另一个符号表达式P,使其微分满足diff(P)=f。

积分命令有多种表达形式,例如:

f='cos(2*x)+s^2'%建立符号表达式f

f=

cos(2*x)+s^2

键入:

int(f)%对x求积分

ans=

1/2*sin(2*x)+s^2*x

4符号表达式画图

MATLAB提供了命令ezplot,将符号表达式可视化。

对于一个自变量的函数,可视化实际上是求解自变量各点上的函数值并绘图的过程。

例如,

y='2*x^2-3*x+10'

y=

2*x^2-3*x+10

键入不同命令:

ezplot(y)%程序自动选择自变量范围绘图

ezplot(y,[-1010])%确定自变量范围绘图

绘图结果如图B-1,图B-2所示,表明了同一个函数不同的自变量范围的图形。

图B-1符号表达式画图,自动选择小x范围图B-2符号表达式画图,给定范围

5符号表达式的简化

对于一些冗长繁复、难以理解的符号表达式,MATLAB提供了许多方法可以将其进行简化、约分、合并同类项等处理,使表达式变得更简洁易懂。

包括:

·pretty命令,该命令以类似于数学课本上的形式(如有理分式)来显示符号表达式。

·collect命令可以合并同类项,给出降幂排列形式

·horner命令可将降幂排列的多项式变成嵌套形式

·factor命令将表达式分解因式

·expand命令展开表达式,给出降幂排列形式

·simplify命令将表达式进行简化

Simplify是一个功能强大、通用的工具。

它利用各种类型的代数恒等式,包括求和、积分和分数幂、三角、指数和log函数等来简化表达式。

·simple命令可在简化基础上进一步给出多种简化形式

符号表达式的简化是很有用的工具,但由于简化方式不同,有时会产生不同的答案。

在符号工具箱内的simple命令可以试用几种方式进行简化,然后选择最简形式。

6可变精度算术运算

计算机内的数值计算精度受到每次计算结果所保留的位数(字长、字节数)的限制,例如如果保留位数是16位,则第17位以后的数据将被舍去,所以任何数值运算都会引入舍入误差,重复多次的数值运算还会造成累计误差。

而MATLAB的符号运算是对符号表达式的运算,结果是非常准确的,因为它们不需要进行数值运算,所以无舍入误差。

对符号运算结果用函数eval或numeric求其数值,所以仅在结果转换时会引入一次性的舍入误差。

原理上,符号运算可以实现任何数位的运算,但当保留位数增加时,每次计算就需要附加时间和计算机内存。

Maple的缺省位数为16位精度,命令digits给出保留位数的当前值。

命令digits(n)可以改变缺省位数,其中n是所期望精度的数位。

用这种方法增加精度的副作用是,每个随后进行的Maple函数的计算都以新的精度为准,增加了计算时间。

计算结果的显示不会改变,只有所用的Maple函数的缺省精度受到影响。

另外一个函数vpa可以用缺省的精度或任何指定的精度实行单个符号表达式的计算,以同样的精度来显示结果,而使全局的digits参数不变。

7符号方程求解

用MATLAB所具有的符号工具箱可以求解符号方程。

(1)解单个代数方程

MATLAB用solve命令求解符号方程。

如果表达式不是一个方程式(不含等号),则在求解之前自动将表达式置成等于0。

它可以求解f(x)=0或y(x)=f(x)两种形式的代数方程。

如果键入命令:

solve('a*x^2+b*x+c')%求二次方程的根

ans=

[1/2/a*(-b+(b^2-4*a*c)^(1/2))]

[1/2/a*(-b-(b^2-4*a*c)^(1/2))]

(2)代数方程组求解

solve命令还可以同时求解若干代数方程,语句形式为:

solve(sl,s2,…,sn)对缺省变量求解n个方程;

solve(s1,s2,……,sn,′v1,v2…vn′)对n个未知数v1,v2…vn求解n个方程。

(3)解单个微分方程

用MATLAB符号工具箱的dsovle命令可以求解微分方程。

由于用符号运算解微分方程可以得到解析解,比起一般的数值解,更具有理论研究意义。

在微分方程的表达式中,包含微分符号。

Dsovle命令中用大写字母D来表示求微分,D2、D3等等表示二次、三次重复求微分。

(4)解微分方程组

命令dsolve也可同时处理若干个微分方程式。

8线性代数和矩阵

MATLAB用线性代数求解符号矩阵问题。

(1)建立符号矩阵

符号矩阵和向量是数组,其元素为符号表达式,用sym命令产生。

建立的符号矩阵,用行向量表示。

例如,

s=sym('[cos(x),a-b;cd,2+x]')

s=

[cos(x),a-b]

[cd,2+x]

(2)矩阵代数运算

用symadd,symsub,symmul和symdiv命令,可以进行符号矩阵的加法、减法、乘法、除法等代数运算,用sympow可计算乘幂,用transpose可以给出符号矩阵的转置。

(3)线性代数运算

在MATLAB5以上的版本中,符号矩阵运算的命令形式与数值矩阵运算命令相同,即同一个命令既可以用于数值矩阵,也可以用于符号矩阵。

但得出的解的形式不同,对于数值矩阵,得出数值解;而对于符号矩阵,得出符号表达式。

例如,

·inv(a)求矩阵的逆矩阵。

·det(a)可计算符号矩阵a的行列式。

·poly求解矩阵的特征多项式。

·[v,e]=eig(a)可以求得符号矩阵的特征根和特征向量,但要求矩阵元素是有理数。

·[v,j]=jordan(A)可以得到矩阵的约当(Jordan)标准型。

得到的v是A的特征向量矩阵,j是特征值的对角矩阵。

·jacobian(f,x)可求解函数f(x)对x的雅可比(Jacobia)矩阵。

其结果的第(i,j)项是df(i)/dx(j)。

缺省自变量是t。

当f是标量时,f的雅可比值是f的梯度。

下面的几个表综合给出了符号工具箱的命令和应用。

表B-2符号表达式的运算

命令说明

Numeric符号到数值的转换

Pretty显示悦目的符号输出

Subs替代子表达式

sym建立符号矩阵或表达式

symadd符号加法

symdiv符号除法

symmul符号乘法

symop符号运算

sympow符号表达式的幂运算

symrat有理近似

symsub符号减法

表B-3符号表达式的简化

命令说明

colleet合并同类项

xepand展开

factor因式

simple求解最简形式

simplify简化

symsum和级数

表B-4符号多项式

命令说明

charpoly特征多项式

horner嵌套多项式表示

numden分子或分母的提取

poly2sym多项式向量到符号的转换

sym2poly符号到多项式向量的转换

表B-5符号微积分

命令说明

diff微分

int积分

jordan约当标准型

taylor泰勒级数展开

表B-6符号可变精度算术

命令说明

digits设置可变精度

vpa可变精度计算

表B-7求解符号方程

命令说明

compose函数的复合

dsolve微分方程的求解

finverse逆函数

linsolve齐次线性方程组的求解

solve代数方程的求解

表B-8符号线性代数

命令说明

ploy特征多项式

det矩阵行列式的值

eig特征值和特征向量

inv逆矩阵

jordan约当标准型

linsolve齐次线性方程组的解

transose矩阵的转置

13

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2