MATLAB 2015从入门到精通
上QQ阅读APP看书,第一时间看更新

2.1 符号对象的创建

2.1.1 创建符号变量和表达式

符号对象是符号工具箱中的一种数据类型。符号对象是符号的字符串表示。在符号工具箱中,符号对象表示符号变量、表达式和方程。符号运算仍然需要首先创建符号对象,如符号常数、符号变量、符号表达式等。

符号对象可以通过sym和syms函数来定义。下面介绍这两个函数的调用格式。

一、sym函数

sym函数可以用于生成单个的符号变量,其调用格式主要有以下几种。

var=sym('var'); 产生符号变量var。

var=sym('var',set); 产生符号变量var,并且声明变量var属于集合set。

sym('var','clear'); 清除之前已经设置的符号变量。

Num=sym(Num); 将数字变量或数字矩阵Num转换成符号形式。

Num=sym(Num,flag); 将数字变量或数字矩阵Num转换成符号形式,第二个参数表示转换后的数据类型,其取值为r、d、e和f中的一个。

A=sym('A',dim); 产生向量或矩阵符号变量。

A=sym('A',set); A 为已经存在的符号向量或矩阵,A 的所有元素均属于集合set,该表达式不是产生符号变量 A。若是要产生向量或矩阵符号变量,则可以使用表达式A=sym('A',[m,n])或A=sym('A',n)。

sym(A,'clear'); 清除之前设置的符号变量A

f(arg1,arg2,…argN)=sym('f(arg1,arg2,…argN)'); 产生符号函数 f,并且声明符号函数的输入变量 arg1,arg2,…,argN。该调用格式不是产生输入变量 arg1,arg2,…,argN;输入变量必须是已经存在的符号变量。

【实例2-1】使用sym函数产生符号表达式 f =a sin x+bex

思路·点拨

本例可以使用两种方法生成该符号表达式,一种是采用逐个变量定义法,另外一种是采用整体定义的方法定义符号表达式。使用sym函数上述的调用格式调用即可。

—附带光盘“Ch2\实例2-1”文件夹

——附带光盘“AVI\实例2-1.avi”

解:方法一:逐个变量定义法,程序如下。

a=sym('a');

b=sym('b');

x=sym('x');

e=sym('e');

f=a*sin(x)+b*e^x

程序运行结果如下。

f =

a*sin(x) + b*e^x

方法二:采用整体定义表达式的方法,程序如下。

f=sym(a*sin(x)+b*e^x)

程序运行结果如下。

f =

a*sin(x) + b*e^x

比较上述两种方法,可以看出,使用方法二能够减少程序的输入,而且输出结果与方法一相同,因此,方法二是一种更为简洁的方法。

二、syms函数

syms用于一次生成多个符号变量,但是不能用于生成表达式。其主要调用格式有以下几种。

syms var1,…varN; 生成符号变量var1,…,varN

syms var1,…varN set; 生成符号变量 var1,…,varN,并且声明符号变量属于集合 set,其中set可以为实数或者是虚数。

syms var1,…varN clear; 清除已经声明的符号变量var1,…,varN

syms f(arg1,…,argN); 生成符号函数f,符号变量var1,…,varN表示符号函数f的输入变量。

例如,生成符号变量xy,假设xy为实数,则代码如下。

sym x y real;

例如,产生符号表达式fx,y)=x+2y,则代码如下。

syms f(x,y);

f(x,y)=x+2*y

再例如,产生符号矩阵,并且求在x=2时的值,其代码如下。

syms x;

f(x)=[x x^2;x^3 x^4]

f(2)

程序运行结果如下。

f(x) =

[ x, x^2]

[ x^3, x^4]

ans =

[ 2, 4]

[ 8, 16]

三、symvar函数

该函数用于确定一个表达式中所有存在的符号变量。其调用格式有以下两种。

symvar(s); 返回一个包含在符号表达式s中的所有符号变量。

symvar(s,n); 返回一个包含 n 个在表达式 s 中的符号变量向量。如果 s 是一个符号表达式,那么则返回s的输入变量。

例如,找到符号表达式f中的所有符号变量,其中符号表达式f

f(a,b)=a*x^2/(sin(3*y-b));

那么在程序中输入以下语句:

symvar(f);

程序的输出结果如下。

ans =

[ a, b, x, y]

注:该函数的返回值都是一个行向量。

四、subs函数

subs函数可以将符号表达式中的符号变量用数值代替,其主要调用格式如下。

g=subs(f,old,new); 在表达式中,用new代替old中的值,并计算。

g=subs(f,new); 用new代替表达式中所有默认的符号变量的值,并计算。

g=subs(f); 替换符号表达式中所有的符号变量,其值可以从调用函数和 MATLAB工作空间中调用,然后计算符号表达式的值。没有指定值的变量仍然可以作为变量。

例如,用代替符号表达式f=x+2sinx中的值,并计算f的值,其代码如下。

syms x;

f=x+2*sin(x)

subs(f,pi/4)

程序运行结果如下。

f =

x + 2*sin(x)

ans =

2.1996

函数subs在多变量符号表达式中的应用举例如下。

已知符号表达式 f=x2+y2,分别用 x=3,y=4代替符号表达式中的 xy,并计算表达式的值。程序如下。

syms x y;

f=x^2+y^2;

g=subs(f,x,3)

subs(g,y,4)

程序运行结果如下。

g =

y^2 + 9

ans =

25