MATLAB學習之符號運算
阿新 • • 發佈:2019-01-29
本文介紹MATLAB中的符號運算;
1. 建立符號變數
符號常量是不含變數的符號表達式,用 sym 命令來建立符號常量。
- sym(‘常量’):建立符號常量。
a=sym('sin(2)')
sym 命令也可以把數值轉換成某種格式的符號常量。
- sym(常量,引數):引數可以選擇為 d、f、e 或 r 四種格式,也可以省略。d 表示返回最接近的十進位制數值(預設位數為32位)。f 表示返回該符號值最接近的浮點數。r 表示返回該符號值最接近的有理數型(為系統預設方式),可表示為 p/q、p*q、10^q、pi/q、2^q 和 sqrt(p) 形式之一。e 表示返回最接近的帶有機器浮點誤差的有理值。
% 建立數值常量和符號常量
a1 = 3*sqrt(5)+pi %建立數值常量
a2 = sym('3*sqrt(5)+pi') %建立符號表達式
a3 = sym(3*sqrt(5)+pi) %按最近的有理數型表示符號常量
a4 = sym(3*sqrt(5)+pi,'d') %按最近的十進位制浮點數表示符號常量
a31= a3-a1 %數值常量和符號常量的計算
a5 = '3*sqrt(5)+pi' %字串常量
- sym(‘變數’, 引數)
% 建立符號變數,用引數設定其特性
syms x y real % 建立實數符號變數
z=x+i*y; % 建立z為複數符號變數
real(z) % 複數z的實部是實數x
sym('x','unreal' ); % 清除符號變數的實數特性
real(z) % 複數z的實部
- sym(‘表示式’):建立符號表達式。
f1=sym('a*x^3+b*x+c')
- syms(‘arg1’,’arg2’,…,引數):把字元變數定義為符號變數。syms 用來建立多個符號變數,這種方式建立的符號物件是相同的。引數設定和前面的 sym 命令相同,省略時符號表達式直接由各符號變數組成。
% 使用syms命令建立符號變數和符號表達式
syms a b c x % 建立多個符號變數
f2 = a*x^2 + b*x + c % 建立符號表達式
syms('a','b','c','x')
- A=sym(‘[a , b ; c , d]’):建立符號矩陣。
syms a b c d
A = [a b;c d]
下面我們通過一個簡單的例子來比較符號矩陣與字串矩陣的不同。
A=sym('[a,b;c,d]') % 建立符號矩陣
B='[a,b;c,d]' % 建立字元矩陣
syms a b c d
C=[a,b;c,d] % 建立數值矩陣
執行結果如下:
2. 數值與符號的轉換
在MATLAB中,利用 sym 函式將數值結果轉換為符號表達式。呼叫方法如下:
sym(a1,’f’) 表示返回符號浮點表示式
sym(a1,’r’) 表示返回符號有理數表示式
sym(a1,’e’) 表示返回符號有理數表示式,同時根據eps給出r的理論和實際計算差
sym(a1,’d’) 表示返回符號十進位制小數
3. 數值矩陣轉換為符號矩陣
在 MATLAB 中,必須事先定義符號矩陣,才能對矩陣進行符號運算。
- sym(矩陣名):數值矩陣轉換為符號矩陣。
A=hilb(3)
A=sym(A)
執行結果如下:
4. 符號替換
在 MATLAB 中,subs 函式用於符號變數的替換,該命令適用於單個符號矩陣、符號表達式、符號代數方程和微分方程,該函式的使用方法如下:
- subs(S, new):表示用新的變數 new 替換 S 中的預設變數 。
- subs(S, old, new):表示用新變數 new 替換 S 中的指定的變數 old 。如果新變數是符號變數,必須將新變數名以 ‘new’ 形式給出。
% 以符號變數 '5' 替換符號表達式 f 中的 'A'
f=sym('sin(1/2*A*pi)');
subs(f, 'A', '5')