一般的加、減、乘、除等四則運算只能用在數值資料,但我們既然創造了多項式物件,就應該要定義這一些同樣適用於多項式操作的基本運算方式。欲達此目的,我們可以藉由定義幾個特殊的函式,來使一般運算元能夠重載(Overloading)到其他物件。
首先,我們定義多項式的加法,可由 plus.m 函式來達成,內容如下:
此函式首先檢查輸入參數是否為多項式物件,若不是,先將之轉成多項式物件,這樣的作法讓我們能夠混和多項式和向量來進行加法,例如我們可以使用「p + [1, 1]」來代表將多項式 p 加上 x+1。
多項式的剪法,則可由 minus.m 函式來達成,內容如下:
有了這兩個函式之後,我們就可以來測試多項式的加減法,如下:
接著我們可以賦予乘法與除法能夠針對多項式物件進行運算,所需定義的函式是 mtimes.m 及 mrdivide.m,內容分別列出如下:
有了這些函式之後,我們就可以對多項式進行加減乘除等四則運算了,請見下列範例:
在前述範例中,我們使用 mrdivide.m 用來定義「右除」(例如 p/q),你也可以使用 mldivide.m 來定義「左除」(例如p\q)。此外,你還可以使用 mpower.m 來定義冪方,例如p^n。MATLAB 運算元與物件函式之間的對應關係,請見下表。
運算式 M-檔案 說明 a+b plus(a,b) 二元加法(Binary addition) +a uplus(a) 一元加法(Unary plus) a-b minus(a,b) 二元減法(Binary subtraction) -a uminus(a) 一元減法(Unary minus) a.*b times(a,b) 元素對元素之乘法(Element-wise multiplication) a*b mtimes(a,b) 矩陣乘法(Matrix multiplication) a./b rdivide(a,b) 元素對元素的右除(Right element-wise division) a.\b ldivide(a,b) 元素對元素的左除(Left element-wise division) a/b mrdivide(a,b) 矩陣的右除(Matrix right division) a\b mldivide(a,b) 矩陣的左除(Matrix left division) a.^b power(a,b) 元素對元素的冪次(Element-wise power) a^b mpower(a,b) 矩陣的冪次(Matrix power) a < b lt(a,b) 小於(Less than) a > b gt(a,b) 大於(Greater than) a <= b le(a,b) 小於或等於(Greater than or equal to) a >= b ge(a,b) 大於或等於(Less than of equal to) a~=b ne(a,b) 不等於(Not equal to) a==b eq(a,b) 等於(Equality) a&b and(a,b) 邏輯 AND(Logical AND) a|b or(a,b) 邏輯 OR(Logical OR) ~a not(a) 邏輯 NOT(Logical NOT) a:d:b
a:bcolon(a,d,b)
colon(a,b)冒號運算(Colon operator) a' ctranspose(a) 共軛複數轉置(Complex conjugate transpose) a.' transpose(a) 矩陣轉置(Matrix transpose) 顯示物件於螢幕 display(a) 顯示物件的方法(Display method) [a b] horzcat(a, b, ...) 水平串接(Horizontal concatenation) [a; b] vertcat(a, b, ...) 垂直串接(Vertical concantenation) a(s1, s2, ..., sn) subsref(a, s) 以下標進行存取(Subscripted reference) a(s1, s2, ..., sn)=b subsasgn(a, s, b) 以下標進行指定(Subscripted assignment) b(a) subsindex(a) 下標索引(Subscript index)
MATLAB程式設計:進階篇