1-2 顫

在進行符號運算之前,我們可用 syms 指令來定義符號變數,例如:

syms a b c x

上式定義了四個符號變數 a、b、c、x。定義了符號變數之後,我們就可以使用這些符號變數來形成數學運算式,例如:

f = a*x^2+b*x+c;

此時 f 是一個 MATLAB 內建的符號物件,你可以輸入 class(f) 來確認 f 的資料型態。接著我們就可以對 f 進行各種符號運算和處理,例如,若要算 f 的根,可輸入如下:

solve(f)

得到的答案就是:

[ 1/2/a*(-b+(b^2-4*a*c)^(1/2))] [ 1/2/a*(-b-(b^2-4*a*c)^(1/2))]
若要求解 x3+ax2+bx+c=0 的三根,可輸入如下:

solve(f+x^3)

此時就可以得到一個複雜的答案,請各位同學自己試試看!

Symbolic Math Toolbox 也可以進行化簡的功能,例如,我們可定義黃金比例如下:

rho = sym('(1+sqrt(5))/2');

其中 sym 指令可將字串 '(1+sqrt(5))/2' 轉成 MATLAB 內建的符號物件。(若要將符號物件 rho 轉成一般數值,可用 eval 指令。)接著我們進行下列運算:

g = rho^2-rho-1

得到的答案是

(1/2+1/2*5^(1/2))^2-3/2-1/2*5^(1/2)
若要化簡上述運算式,可輸入如下:

simplify(g)

所得結果應該不出所料。(你自己試試看囉。)

我們也可以對矩陣進行符號運算,例如:

syms t A = [cos(t), sin(t); -sin(t), cos(t)]; B = A*A*A

此時顯示的矩陣 B 是

[ (cos(t)^2-sin(t)^2)*cos(t)-2*cos(t)*sin(t)^2, (cos(t)^2-sin(t)^2)*sin(t)+2*cos(t)^2*sin(t)] [ -2*cos(t)^2*sin(t)-(cos(t)^2-sin(t)^2)*sin(t), (cos(t)^2-sin(t)^2)*cos(t)-2*cos(t)*sin(t)^2]
我們可用另一個功能較強大的 simple 指令來對矩陣 B 進行化簡:

simple(B)

經過了幾個複雜的中間過程,最後得到的答案是:

[ cos(3*t), sin(3*t)] [ -sin(3*t), cos(3*t)]
你猜到了嗎?若有興趣,你可以試試看 simple(A^5) 或 simple(A^10)。
Symbolic Math Toolbox