MATLAB符號計算

2021-09-09 04:06:12 字數 3782 閱讀 3611

1.  建立符號物件

建立符號變數和符號常量

matlab提供了兩個建立符號物件的函式:sym和syms,兩個函式的用法不同。

(1) sym函式

sym函式用來建立單個符號量,一般呼叫格式為:

符號量名=sym('符號字串')

該函式可以建立乙個符號量,符號字串可以是常量、變數、函式或表示式。

應用sym函式還可以定義符號常量,使用符號常量進行代數運算時和數值常量進行的運算不同。下面的命令用於比較符號常量與數值常量在代數運算時的差別。

(2) syms函式

函式sym一次只能定義乙個符號變數,使用不方便。matlab提供了另乙個函式syms,一次可以定義多個符號變數。syms函式的一般呼叫格式為:

syms  符號變數名1 符號變數名2 … 符號變數名n

用這種格式定義符號變數時不要在變數名上加字串分界符(『),變數間用空格而不要用逗號分隔。

2. 符號表示式運算

1 符號表示式的四則運算

符號表示式的加、減、乘、除運算可分別由函式symadd、symsub、symmul和symdiv來實現,冪運算可以由sympow來實現。

2 符號表示式的提取分子和分母運算

如果符號表示式是乙個有理分式或可以展開為有理分式,可利用numden函式來提取符號表示式中的分子或分母。其一般呼叫格式為:

[n,d]=numden(s)

該函式提取符號表示式s的分子和分母,分別將它們存放在n與d中。

3 符號表示式的因式分解與展開

matlab提供了符號表示式的因式分解與展開的函式,函式的呼叫格式為:

factor(s):對符號表示式s分解因式。

expand(s):對符號表示式s進行展開。

collect(s):對符號表示式s合併同類項。

collect(s,v):對符號表示式s按變數v合併同類項。

4 符號表示式的化簡

matlab提供的對符號表示式化簡的函式有:

simplify(s):應用函式規則對s進行化簡。

******(s):呼叫matlab的其他函式對表示式進行綜合化簡,並顯示化簡過程。

5 符號表示式與數值表示式之間的轉換

利用函式sym可以將數值表示式變換成它的符號表示式。

函式numeric或eval可以將符號表示式變換成數值表示式。

3 . 符號表示式中變數的確定

matlab中的符號可以表示符號變數和符號常量。findsym可以幫助使用者查詢乙個符號表示式中的的符號變數。該函式的呼叫格式為:

findsym(s,n),函式返回符號表示式s中的n個符號變數,若沒有指定n,則返回s中的全部符號變數。

4. 符號矩陣

符號矩陣也是一種符號表示式,所以前面介紹的符號表示式運算都可以在矩陣意義下進行。但應注意這些函式作用於符號矩陣時,是分別作用於矩陣的每乙個元素。

由於符號矩陣是乙個矩陣,所以符號矩陣還能進行有關矩陣的運算。matlab還有一些專用於符號矩陣的函式,這些函式作用於單個的資料無意義。例如

transpose(s):返回s矩陣的轉置矩陣。

determ(s):返回s矩陣的行列式值。

其實,曾介紹過的許多應用於數值矩陣的函式,如diag、triu、tril、inv、det、rank、eig等,也可直接應用於符號矩陣。

5 . 符號微積分

1 符號極限

limit函式的呼叫格式為:

(1) limit(f,x,a):求符號函式f(x)的極限值。即計算當變數x趨近於常數a時,f(x)函式的極限值。

(2) limit(f,a):求符號函式f(x)的極限值。由於沒有指定符號函式f(x)的自變數,則使用該格式時,符號函式f(x)的變數為函式findsym(f)確定的預設自變數,即變數x趨近於a。

(3) limit(f):求符號函式f(x)的極限值。符號函式f(x)的變數為函式findsym(f)確定的預設變數;沒有指定變數的目標值時,系統預設變數趨近於0,即a=0的情況。

(4) limit(f,x,a,'right'):求符號函式f的極限值。'right'表示變數x從右邊趨近於a。

(5) limit(f,x,a,『left』):求符號函式f的極限值。『left』表示變數x從左邊趨近於a。

1 %限1:

2syms a m x;

3 f=(x*(exp(sin(x))+1)-2*(exp(tan(x))-1))/(x+a);

4limit(f,x,a)

5 ans =

6 (1/2*a*exp(sin(a))+1/2*a-exp(tan(a))+1)/a

7 %限2:

8syms x t;

9 limit((1+2*t/x)^(3*x),x,inf)

10 ans =

11 exp(6*t)

2  符號導數

diff函式用於對符號表示式求導數。該函式的一般呼叫格式為:

diff(s):沒有指定變數和導數階數,則系統按findsym函式指示的預設變數對符號表示式s求一階導數。

diff(s,'v'):以v為自變數,對符號表示式s求一階導數。

diff(s,n):按findsym函式指示的預設變數對符號表示式s求n階導數,n為正整數。

diff(s,'v',n):以v為自變數,對符號表示式s求n階導數。

3  符號積分

符號積分由函式int來實現。該函式的一般呼叫格式為:

int(s):沒有指定積分變數和積分階數時,系統按findsym函式指示的預設變數對被積函式或符號表示式s求不定積分。

int(s,v):以v為自變數,對被積函式或符號表示式s求不定積分。

int(s,v,a,b):求定積分運算。a,b分別表示定積分的下限和上限。該函式求被積函式在區間[a,b]上的定積分。a和b可以是兩個具體的數,也可以是乙個符號表示式,還可以是無窮(inf)。當函式f關於變數x在閉區間[a,b]上可積時,函式返回乙個定積分結果。當a,b中有乙個是inf時,函式返回乙個廣義積分。當a,b中有乙個符號表示式時,函式返回乙個符號函式。

4  積分變換

常見的積分變換有傅利葉變換、拉普拉斯變換和z變換。

1.傅利葉(fourier)變換

在matlab中,進行傅利葉變換的函式是:

fourier(f,x,t):求函式f(x)的傅利葉像函式f(t)。

ifourier(f,t,x):求傅利葉像函式f(t)的原函式f(x)。

2.拉普拉斯(laplace)變換

在matlab中,進行拉普拉斯變換的函式是:

laplace(fx,x,t):求函式f(x)的拉普拉斯像函式f(t)。

ilaplace(fw,t,x):求拉普拉斯像函式f(t)的原函式f(x)。

3.z變換

當函式f(x)呈現為乙個離散的數列f(n)時,對數列f(n)進行z變換的matlab函式是:

ztrans(fn,n,z):求fn的z變換像函式f(z)。

iztrans(fz,z,n):求fz的z變換原函式f(n)。

6.  級  數

1   級數符號求和

求無窮級數的和需要符號表示式求和函式symsum,其呼叫格式為:

symsum(s,v,n,m)

其中s表示乙個級數的通項,是乙個符號表示式。v是求和變數,v省略時使用系統的預設變數。n和m是求和的開始項和末項。

2  函式的泰勒級數

matlab提供了taylor函式將函式展開為冪級數,其呼叫格式為:

taylor(f,v,n,a)

該函式將函式f按變數v展開為泰勒級數,展開到第n項(即變數v的n-1次冪)為止,n的預設值為6。v的預設值與diff函式相同。引數a指定將函式f在自變數v=a處展開,a的預設值是0。

MATLAB的符號計算

數學計算有數值計算與符號計算之分。這兩者的根本區別是 數值計算的表示式 矩陣變數中不允許有未定義的自由變數 而符號計算可以含有未定義的符號變數。對於一般的程式設計軟體如 c,c 等語言實現數值計算還可以 但是實現符號計算並不是一件容易的事。而 matlab 自帶有符號工具箱 symbolic mat...

MATLAB 求導 符號計算

求導 diff 函式 求的一階導數 diff 函式,n 求的n階導數 n是具體整數 diff 函式,變數名 求對的偏導數 diff 函式,變數名,n 求對的n階偏導數 符號計算函式 r subs s,new 利用new的值代替符號表示式s中的預設符號 r subs s 用由呼叫函式或matlab工作...

Matlab 基礎符號計算

呼叫格式為 建立變數的變數名為x,變數x的值為單引號內的字串或數值。x sym 字元 str2sym 字串 同時建立多個符號變數,值就是變數本身,等價於x sym x y sym y syms x y z注 在最近版本中,sym只能指定乙個變數或數。要表示符號表示式需要使用str2sym,在舊版本中...