符号表达式是代表数字、函数、算子和变量的matlab字符串,或字符串数组。不要求变量有预先确定的值,符号方程式是含有等号的符号表达式。符号算术是使用已知的规则和给定符号恒等式求解这些符号方程的实践,它与代数和微积分所学到的求解方法完全一样。符号矩阵是数组,其元素是符号表达式。
MATLAB在内部把符号表达式表示成字符串,以与数字变量或运算相区别;否则,这些符号表达式几乎完全象基本的MATLAB命令。表22.1列有几则符号表达式例子以及MATLAB等效表达式。
表22.1
符号表达式 MATLAB表达式
' 1/(2*x^n) '
y= ' 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符号函数可让用户用多种方法来操作这些表达式,比如,
>> diff( ' cos(x) ' ) % differentiate cos(x) with respect to x
ans=
-sin(x)
>> M=sym( ' [a,b;c,d] ' ) % create a symbolic matrix M
M=
[a,b]
[c,d]
>> determ(M) % find the determinant of the symbolic matrix M
ans=
a*d-b*c
请注意,上面的第一个例子的符号表达式是用单引号以隐含方式定义的。它告诉MATLAB ' cos(x) ' 是一个字符串并说明diff( ' cosx ' )是一个符号表达式而不是数字表达式;然而在第二个例子中,用函数sym显式地告诉MATLAB M=sym( ' [a,b;c,d] ' )是一符号表达式。在MATLAB可以自己确定变量类型的场合下,通常不要求显式函数sym。
正如在第八章所阐述,MATLAB中函数function argument形式是与function( ' argument ' )等价的。其中,function是一个函数,argument是一字符串。例如,MATLAB可以构造diff cos(x)和diff( ' cos(x) ' )两者都意味diff (sym ' cos(x) ' )。但第一种形式显然更便于输入。然而,很多时候sym是必要的。在上述的第二个例子中,
>> M=[a,b;c,d] % M is a numeric matrix using value of a through d
???Uundefine function or variable a.
>> M= ' [a,b;c,d] ' % M is a character string, but not a symbolic matrix
M=
[a,b;c,d]
>> M=sym( ' [a,b;c,d] ' ) % M is a symbolic matrix
M=
[a,b]
[c,d]
M以三种方式定义: 数字型(如果a、b、c、d已预先确定)、字符串型或符号矩阵型。许多符号函数非常巧妙能够自动将字符转变为符号表达式。但在某些情况下,尤其是建立符号数组时,必须用函数sym,特别地将字符串变为符号表达式。隐含形式,例如diff cos(x),对于那些不需要参考先前结果的简单任务,最有用。但是最简单形式(无引号)要求一个参量,它是一个单字符的字符串、不包含插入的空格。
举报
举报
举报
举报
更多回帖