第六章 Matlab符号计算
在科学研究和工程应用中,除了存在大量的数值计算外,还有对符号对象进行的运算,即直接对抽象的符号对象进行的计算,并将所得到的结果以标准的符号形式来表示。符号计算可以得到比数值计算更一般的结果。Matlab的符号计算是通过集成在Matlab中的符号运算工具箱(Symbolic Math Toolbox)来实现的。本章主要介绍符号计算基础,符号微积分,级数的符号求和,代数方程和微分方程的符号求解等内容。
一.符号计算基础
Matlab提供了一种符号数据类型,相应的运算对象称为符号对象。如:符号常量,符号变量,以及它们参与的数学表达式等。在进行符号运算前首先要建立符号对象,然后才可以进行符号对象的运算。
一.符号对象
1. 建立符号变量和符号常量
matlab提供了两个建立符号对象的命令:sym和syms。其用法不同。
①sym函数
sym函数用来建立单个符号量,格式为:
符号量名=sym(符号字符串)
该函数可以建立一个符号字符串,符号字符串可以是常量、变量、函数或表达式。如:a=sym(' a ')将建立符号变量a,此后用户可以在表达式中使用变量a进行各种运算.符号变量a和在其他过程中建立的非符号变量a是不同的。一个非符号变量在参与运算前必须赋值,变量的运算实际上该变量所对应值的运算,其运算结果是一个和变量类型对应的值,而符号变量参与运算前无须赋值,其结果是一个由参与运算的变量名组成的表达式。
a=sym('a'); %定义符号变量
b=sym('b');
c=sym('c');
x=5; %定义数值变量
y=-8;
z=11;
w=a*a+b*b+c*c %符号运算
w =
a^2+b^2+c^2
w=x*x+y*y+z*z %数值运算
w=
210
使用sym函数还可以定义符号常量,使用符号常量进行代数运算时和数值常量进行的运算不同。下面比较差别:
pi1=sym('pi');k1=sym('8');k2=sym('3'); %定义符号变量
pi2=pi;r1=8;r2=3; %定义数值变量
sin(pi1/3) %符号计算
ans =
1/2*3^(1/2)
sin(pi2/3) %数值计算
ans =
0.8660
sqrt(k1+sqrt(k2)) %符号计算
ans =
(8+3^(1/2))^(1/2)
sqrt(r1+sqrt(r2)) %数值计算
ans =
3.1196
从命令执行结果来看,用符号常量进行计算像在进行数学演算,所得到的结果是精确的数学表达式,而数值计算将结果近似为一个有限的小数。
②syms命令
sym函数一次只能定义一个符号变量,使用不方便。Matlab提供了syms命令,一次可以定义多个符号变量。其格式:
syms arg1 arg2 … argn
arg1 arg2 … argn是定义的符号变量名,注意变量间用空格而不要用逗号分隔。
2.建立符号表达式
含有符号对象的表达式称为符号表达式,建立符号表达式有以下3种方法:
①利用单引号生成符号表达式
y='1/sqrt(2*x)' %生成一般的符号表达式
y =
1/sqrt(2*x)
f='cos(x^2)-sin(2*x)=0' %生成符号方程
f =
cos(x^2)-sin(2*x)=0
②用sym函数建立符号表达式
U=sym('3*x^2-5*y+2*x*y+6') %生成符号表达式,不需定义变量
U =
3*x^2-5*y+2*x*y+6
M=sym('[a,b;c,d]') %生成符号矩阵
M =
[ a, b]
[ c, d]
③使用已定义的符号变量组成符号表达式
syms x y;
V=3*x^2-5*y+2*x*y+6
V =
3*x^2-5*y+2*x*y+6
二.基本的符号运算
1.四则运算: