符号运算
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
与Wolfram公司(Mathematics的开发公司)相比,Mathworks公司一直以矩阵计算和强大的数据处理能力见长,而符号计算非强项。1993年,mathworks公司从加拿大Waterloo Maple公司购买了maple的内核技术,作为MA TLAB符号运算与推导的平台,开发了用以进行符号计算的基本符号运算工具箱和扩展符号运算工具箱,从而解决了MA TLAB在符号计算方面的缺陷。
MA TLAB7.0的符号运算工具箱已上升到3.1.1版本,它几乎可以完成所有的符号运算功能,包括符号函数与符号方程的定义、运算、复合、化简、符号矩阵的计算、符号微分、符号积分、符号代数方程、符号微分方程的求解、符号积分变换和符号特殊函数。
在MA TLAB7.0的符号数学工具箱中,符号表达式含有符号函数和符号方程两种形式,它是表示数字、函数或变量的字符串或字符串组。字符就是符号变量的值。因此在MA TLAB的源程序中符号表达式被表示成字符串和字符串组。符号函数和符号方程的区别是符号函数没有等号,而符号方程必须有等号。
符号变量的定义
MA TLAB有默认的符号自变量,但在各种情况下默认的自变量是不同的。系统默认的自变量主要有x、x1、y、y1、z、v、u、t、theta、alpha。对于这些变量MA TLAB 的默认规则与平时数学习惯大致相同,即:
当这些变量中的某一个与其他变量组成符号数学表达式时,这个变量即为默认的自变量;
当这些变量中的某几个组成符号数学表达式是,默认自变量的顺序是:x>x1>y>y1>z>v>u>t>theta>alpha
例如:
当数学表达式为cos(2*x*a^2)时,默认的自变量为x;
当数学表达式为cos(2*x*v)时,默认的自变量为x;
当数学表达式为cos(2*t*alpha)时,默认的自变量为t;
符号变量可以通过命令syms和sym定义,syms命令一个可以定义一个或多个符号变量。sym一个只能定义一个符号变量。
>> syms x y z t
>> who
Y our variables are:
t x y z
>> syms u
>> who
Y our variables are:
t u x y z
>> x=sym('x');
>> t=sym('t');
>> z=sym('z');
>> y=sym('y');
>> who
Y our variables are:
ans t x y z
符号表达式的定义
MA TLAB7.0当中,符号表达式可以通过基本赋值语句,采用单引号或sym/syms
命令定义。定义好的符号函数可以通过symvar检查其自变量。
实例:>> f='a*x^2+b*x+c=0'
f =
a*x^2+b*x+c=0
>> f='a*D2y+b*Dy+3*y=0'
f =
a*D2y+b*Dy+3*y=0
>> f='asin(x)'
f =
asin(x)
>> sym('x*log(x)-sin(x)')
ans =
x*log(x)-sin(x)
>> symvar('x*log(x)-sin(x)')
ans =
'x'
>> f=sym('a*x^2+b*x+c=0')
f =
a*x^2+b*x+c=0
>> A=sym('[a,b,c,d;f,g,h,k]')
A = [ a, b, c, d]
[ f, g, h, k]
符号表达式的基本运算
符号表达式的基本运算有合并同类项、表达式展开、因式分解、提取符号表达式的分子和分母、符号表达式的化简、确定符号矩阵的维数等等。
1、collect(S) 按默认变量的次数对符号多项式S合并同类项。
2、collect(S,v) 按指定变量的次数对符号多项式S合并同类项。
3、expand(S) 将S展开
4、factor(x) 将符号表达式因式分解。当x是正整数时,分解为质数分解式;
当x为符号表达式,分解为乘积形式;当x为符号整数或符号表达式阵列,
则分解每一个元素为质数分解式或乘积形式
5、[N,D]=numden(A) 求符号表达式的分子A和分母D
6、simple(S) 求各种不同算法下符号表达式的化简形式
7、[r,how]=simple(S) 求S的最短形式和化简方法
8、simplify(S) 对S进行化简,若S为矩阵则化简其每一个元素
9、size(A) 求符号函数A的维数
10、[m,n]=size(A) 求符号函数A的行数和列数
11、size(A,n) n=1时求A的行数;n=2时求A的列数
>> syms x y a b
>> f=(x+a)*(x+b)+(x-a)^2
f =
(x+a)*(x+b)+(x-a)^2
>> f1=collect(f)
f1 =
2*x^2+(-a+b)*x+a*b+a^2
>> f=(x+y)^3-(x+y)^2+y^4;
>> f2=collect(f,y)
f2 =
y^4+y^3+(3*x-1)*y^2+(3*x^2-2*x)*y+x^3-x^2 >> f=(x-2)^2*(x-1)-(x+1)^2
>> expand(f)
ans =
x^3-6*x^2+6*x-5
>> A=[sin(2*x),cos(2*x);(a+b)^2,(a-b)^2];
>> expand(A)
ans =
[ 2*sin(x)*cos(x), 2*cos(x)^2-1]
[ a^2+2*a*b+b^2, a^2-2*a*b+b^2]
>> A1=factor(sym('243'))
A1 =
(3)^5
>> A2=factor(243)
A2 =
3 3 3 3 3
>> A3=factor([a*x-a*b,x^2-b*x;(x-b)^2,x^2-b^2]) A3 =