第5章 符號計算 (1)_第1頁
第5章 符號計算 (1)_第2頁
第5章 符號計算 (1)_第3頁
第5章 符號計算 (1)_第4頁
第5章 符號計算 (1)_第5頁
已閱讀5頁,還剩39頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、 MATLAB 7.X程序設計程序設計 2/44 創建符號常量和變量;創建符號常量和變量; 符號多項式的運算;符號多項式的運算; 符號微積分的計算;符號微積分的計算; 符號積分變換的計算;符號積分變換的計算; 符號微分方程和代數方程的求解。符號微分方程和代數方程的求解。 MATLAB 7.X程序設計程序設計 3/44 5.1.1 概述概述 符號計算的特點:符號計算的特點: 1)符號計算定義在符號變量的基礎上,符號表)符號計算定義在符號變量的基礎上,符號表 達式計算前必須定義符號變量。達式計算前必須定義符號變量。 2)符號計算是精確計算。)符號計算是精確計算。 3)符號計算的計算速度較慢。)符號

2、計算的計算速度較慢。 4)符號計算的運算符和基本數學函數與數值計)符號計算的運算符和基本數學函數與數值計 算中的運算符和基本數學函數幾乎完全相同。算中的運算符和基本數學函數幾乎完全相同。 MATLAB 7.X程序設計程序設計 4/44 symsym函數創建符號常量,格式函數創建符號常量,格式1 1為:為: sym( sym(常量常量) 例例5-15-1 創建符號常量創建符號常量。 b=sym(pi) %創建符號常量創建符號常量 MATLAB 7.X程序設計程序設計 5/44 symsym函數的格式函數的格式2 2為:為: sym( sym(常量常量, ,參數參數) ) 功能:功能:把常量按參數

3、的格式要求轉換為符號常把常量按參數的格式要求轉換為符號常 量。其中參數的含義:量。其中參數的含義: d d 返回最接近的十進制數返回最接近的十進制數( (默認位數為默認位數為3232位位) ) f f 返回該符號值最接近的浮點表示返回該符號值最接近的浮點表示 r r 返回該符號值最接近的有理數型返回該符號值最接近的有理數型( (為系統默認為系統默認 方式方式) ),可表示為,可表示為p/qp/q、p p* *q q、10q10q、p/qp/q、2q2q 和和sqrtsqrt(p)(p)形式之一形式之一 e e 返回最接近的帶有機器浮點誤差的有理值返回最接近的帶有機器浮點誤差的有理值 MATLA

4、B 7.X程序設計程序設計 6/44 sym( sym(變量變量,參數參數) ) 功能:功能:把變量定義為符號對象。其中把變量定義為符號對象。其中參數用來設參數用來設 置限定符號變量的數學特性,有三種選擇:置限定符號變量的數學特性,有三種選擇: positivepositive 表示為表示為“正、實正、實”符號變量,符號變量, realreal 表示為表示為“實實”符號變量,符號變量, unrealunreal 表示為表示為“非實非實”符號變量。如符號變量。如 果不限定則參數可省略。果不限定則參數可省略。 MATLAB 7.X程序設計程序設計 7/44 symssyms函數的格式為:函數的格式

5、為: syms syms(arg1, arg2, (arg1, arg2, , ,參數參數) ) syms syms arg1 arg2 arg1 arg2 參數參數 功能:功能:創建多個符號變量。創建多個符號變量。 例例5-25-2 創建符號復數變量創建符號復數變量a+bia+bi。 MATLAB 7.X程序設計程序設計 8/44 5.2.1 符號表達式的符號表達式的基本運算基本運算 1 1 算術運算、關系運算算術運算、關系運算 2 常用的函數常用的函數 1) 1) 三角函數和雙曲函數三角函數和雙曲函數 2) 2) 指數和對數函數指數和對數函數 3) 3) 矩陣分析函數矩陣分析函數 MATL

6、AB 7.X程序設計程序設計 9/44 例例5-35-3 創建符號矩陣,并求逆、對角陣、行創建符號矩陣,并求逆、對角陣、行 列式和秩。列式和秩。 例例5-45-4 求線性方程組的解。求線性方程組的解。 32 14 1234 2 143 1234 22 10 4 81 xx xx xxxx x xxx xxxx 如果求解前如果求解前3 3個方程所構成的個方程所構成的“欠定欠定”方程組呢?方程組呢? MATLAB 7.X程序設計程序設計 10/44 4) 4) 取整函數取整函數 5 5)復數函數)復數函數 例例5-55-5 創建符號復數常量,并求其共軛、實創建符號復數常量,并求其共軛、實 部部 、

7、虛部和模。、虛部和模。 MATLAB 7.X程序設計程序設計 11/44 三種不同的算術運算:三種不同的算術運算: 1) 1) 數值型數值型 MATLABMATLAB的浮點運算。的浮點運算。 2) 2) 有理數型有理數型 MapleMaple的精確符號運算。的精確符號運算。 3) 3) VPAVPA型型 MapleMaple的任意精度運算。的任意精度運算。 MATLAB 7.X程序設計程序設計 12/44 第第3 3種運算的精度可以任意設置種運算的精度可以任意設置, ,由由digitsdigits和和 vpavpa函數實現。函數實現。 digits(n) digits(n) 功能:功能:設定計

8、算精度和改變默認的有效位數函設定計算精度和改變默認的有效位數函 數。數。 其中其中n n為所期望的有效位數,默認值為為所期望的有效位數,默認值為3232位。位。 Vpa Vpa 的格式為:的格式為: S=S=vpavpa(s,n)(s,n) 功能:功能:將將s s表示為表示為n n位有效位數的符號對象。位有效位數的符號對象。 MATLAB 7.X程序設計程序設計 13/44 例例5-65-6 應用應用digitsdigits和和vpavpa函數設置運算精度。函數設置運算精度。 a=sym(2*sqrt(5)+pi) % %創建符號對象創建符號對象 digits %顯示默認的有效位數顯示默認的有

9、效位數 vpa(a) % %用默認的位數計算并顯示用默認的位數計算并顯示 vpa(a,20) % %按指定的精度計算并顯示按指定的精度計算并顯示 digits(15) % %改變默認的有效位數改變默認的有效位數 vpa(a) % %按按digitsdigits指定的精度計算并顯示指定的精度計算并顯示 MATLAB 7.X程序設計程序設計 14/44 double(S) 功能:功能:把符號矩陣把符號矩陣S轉換為雙精度浮點數矩陣。轉換為雙精度浮點數矩陣。 single(S) 功能:功能:把符號矩陣把符號矩陣S轉換為單精度浮點數矩陣。轉換為單精度浮點數矩陣。 MATLAB 7.X程序設計程序設計 1

10、5/44 s=sym(1/3 5/7;sqrt(3) 8/9) %建立符號常數矩陣建立符號常數矩陣s single(s) % %把把s s轉換為數值矩陣轉換為數值矩陣 MATLAB 7.X程序設計程序設計 16/44 符號表達式允許使用自由變量。確定自由變符號表達式允許使用自由變量。確定自由變 量的原則:量的原則: 1 1)小寫字母)小寫字母i i和和j j不能作為自由變量。不能作為自由變量。 2 2)符號表達式中如果有多個字符變量,則按)符號表達式中如果有多個字符變量,則按 照以下順序選擇自由變量:照以下順序選擇自由變量: 首先選擇首先選擇x x作為自由變量;如果沒有作為自由變量;如果沒有x

11、 x,則則 選擇在字母順序中最接近選擇在字母順序中最接近x x的字符變量;如的字符變量;如 果與果與x x相同距離,則在相同距離,則在x x后面的優先。后面的優先。 3 3)大寫字母比所有的小寫字母都靠后。)大寫字母比所有的小寫字母都靠后。 MATLAB 7.X程序設計程序設計 17/44 findsymfindsym的格式為的格式為: findsymfindsym(EXPR,n)(EXPR,n) 功能:功能:確定確定EXPREXPR中的自由變量。中的自由變量。 其中其中EXPREXPR可以是符號表達式或符號矩陣;可以是符號表達式或符號矩陣;n n為為 按順序得出符號變量的個數,當按順序得出符

12、號變量的個數,當n n省略時,省略時, 則不按順序給出則不按順序給出EXPREXPR中所有的符號變量中所有的符號變量。 MATLAB 7.X程序設計程序設計 18/44 f1=sym(a*x2+B*x+c) %創建符號表達式創建符號表達式a*x2+ B*x+c findsym(f1) %確定確定B, a, c, x為符號變量為符號變量 findsym(f1,1) %確定確定x為符號變量為符號變量 findsym(f1,2) %確定確定x,c為符號變量為符號變量 findsym(f1,3) %確定確定x,c,a為符號變量為符號變量 findsym(f1,4) %確定確定x,c,a,B為符號變量為

13、符號變量 MATLAB 7.X程序設計程序設計 19/44 subs (S) 功能:功能:用用MATLAB工作空間中的變量替換工作空間中的變量替換S符符 號表達式中的所有變量。號表達式中的所有變量。 subs (S,NEW) 功能:功能:用變量用變量NEW替換符號表達式替換符號表達式S中的自由中的自由 變量。變量。 subs (S,OLD,NEW) 功能:功能:用變量用變量NEW替換符號表達式替換符號表達式S中的變量中的變量 OLD。 MATLAB 7.X程序設計程序設計 20/44 syms a b x; %創建符號變量創建符號變量a, b,和和 x f=a*sin(x)+b; % %創建符

14、號表達式創建符號表達式 f1=subs(f,a,sym(2) % %以符號常量以符號常量2 2替換符號變量替換符號變量a a f2=subs(f,a,b,sym(2),sym(3) % %分別以符號常量分別以符號常量2 2、3 3替換符號變量替換符號變量a a、b b f3=subs(f,a,b,3,2) % %分別以標量分別以標量2 2、3 3替換符號變量替換符號變量a a、b b MATLAB 7.X程序設計程序設計 21/44 f4=subs(f,sin(x),sym(y) % %以符號變量以符號變量y y替換符號表達式替換符號表達式sin(x)sin(x) f5=subs(f,a,b,

15、x,2,2,sym(pi/3) % %分別以標量分別以標量2 2、3 3替換符號變量替換符號變量a a、b b,以符號常量以符號常量 pi/3pi/3替換符號變量替換符號變量x x f6=subs(f,a,b,x,2,2,pi/3) % %分別以標量分別以標量2 2、3 3 、pi/3pi/3替換符號變量替換符號變量a a、b b、x x MATLAB 7.X程序設計程序設計 22/44 finverse(f,v)finverse(f,v) 功能:功能:對指定自變量對指定自變量v v的函數的函數f(v)f(v)求反函數。求反函數。 當當v v省略時,則對默認的自由符號變量求反省略時,則對默認的

16、自由符號變量求反 函數。函數。 composecompose(f,g,x,z) 功能:功能:返回值為返回值為f(g(z)f(g(z)。其中其中f f和和g g是符號表是符號表 達式達式, ,x x和和z z是符號變量。是符號變量。 MATLAB 7.X程序設計程序設計 23/44 例例5-11 求求tetex x的反函數。的反函數。 f=sym(t*ex)%原函數原函數 g=finverse(f) % %對默認自由變量對默認自由變量x x求反函數求反函數 g=finverse(f,t)% %對對t t求反函數求反函數 例例5-10 求求y=x2y=x2的反函數。的反函數。 syms x;f=x

17、2;g=finverse(f) fg=compose(g,f) % %驗算驗算g(f(x)g(f(x)是否等于是否等于x x MATLAB 7.X程序設計程序設計 24/44 應該注意的是應該注意的是如果先定義如果先定義t t為符號變量,則為符號變量,則 參數參數 tt的單引號可去掉:的單引號可去掉: syms t g=finverse(f,t) 例例5-12 求求sinxsinx和和lnxlnx的反函數。的反函數。 MATLAB 7.X程序設計程序設計 25/44 5.3.1 合并同類項合并同類項 collect (S,v) 功能:功能:合并多項式合并多項式S的同類項。的同類項。其中其中S是

18、符號表是符號表 達式,達式,v是合并同類項的變量。是合并同類項的變量。 collect (S) 功能:功能:以以findsym確定的變量合并多項式確定的變量合并多項式S的同的同 類項。類項。 函數函數prettypretty可給出多項式的易讀形式。可給出多項式的易讀形式。 MATLAB 7.X程序設計程序設計 26/44 例例5-13 合并多項式合并多項式 的同類項。的同類項。 32 (1)(1)xxx x=sym(x); f=(x3+x+1)*(x2+1); g=collect(f) MATLAB 7.X程序設計程序設計 27/44 例例5-14 合并多項式合并多項式 的同類項。的同類項。

19、2 (1)() tt xxexe s=sym(x2+x*exp(-t)+1)*(x+exp(-t); e1=collect(s) %合并關于合并關于x的的同類項系數同類項系數 e2=collect(s,exp(-t) % %合并關于合并關于exp(-t)exp(-t)的的同類項系數同類項系數 e3=collect(s,t) % %合并關于合并關于t t的的同類項系數同類項系數 MATLAB 7.X程序設計程序設計 28/44 syms x;f=x3+2*x2-3*x+5; sy2p=sym2poly(f) %由符號多項式產生數值系數行向量由符號多項式產生數值系數行向量 p2st=poly2st

20、r(sy2p,x) % %把系數行向量變成易讀表示式把系數行向量變成易讀表示式 p2sy=poly2sym(sy2p) % %把數值系數行向量再轉換為符號多項式把數值系數行向量再轉換為符號多項式 pretty(f,x) % %顯示符號多項式的易讀表示形式顯示符號多項式的易讀表示形式 MATLAB 7.X程序設計程序設計 29/44 factor(s)factor(s) 功能:功能:把符號表達式把符號表達式S S轉換為多個因式相乘的轉換為多個因式相乘的 形式,各多項式的系數均為有理數。形式,各多項式的系數均為有理數。 hornerhorner(s) (s) 功能:功能:將符號多項式將符號多項式s

21、 s轉換為嵌套形式表示,轉換為嵌套形式表示, 即用多層括號的形式表示。即用多層括號的形式表示。 MATLAB 7.X程序設計程序設計 30/44 syms x a;f=factor(x3-a3) ; pretty(f,x) 執行結果如下執行結果如下: ans = ans = 2 2 2 2 -(a - x) (a + a x + x ) -(a - x) (a + a x + x ) 33 xa MATLAB 7.X程序設計程序設計 31/44 syms x b; f=x3+b3 x4-1;x5-1 x6-1; factor(f) 334 56 1 11 xbx xx MATLAB 7.X程序

22、設計程序設計 32/44 syms x; horner(x6-x4-5*x3+5*x2+5*x-6) 6432 5556xxxxx MATLAB 7.X程序設計程序設計 33/44 factor(1025) 執行結果如下:執行結果如下: ans = 5 5 41 分析:分析:由執行結果可以看出由執行結果可以看出1025=5541, 恰巧是素數之積。恰巧是素數之積。 MATLAB 7.X程序設計程序設計 34/44 sushu=; for ii=10:99 x=factor(ii); if x=ii sushu=sushu ii; end end sushu MATLAB 7.X程序設計程序設計

23、 35/44 例例5-205-20 問入取何值時,齊次方程組有非問入取何值時,齊次方程組有非 0 0解?解? 123 123 123 (1)240 2(3)0 (1)0 xxx xxx xxx MATLAB 7.X程序設計程序設計 36/44 N,D = numdennumden (S) 提取有理多項式的提取有理多項式的分子、分母多項式。分子、分母多項式。其其 中中S是符號表達式,是符號表達式,N為符號表達式為符號表達式S的分的分 子,子,D為符號表達式為符號表達式S的分母。的分母。 MATLAB 7.X程序設計程序設計 37/44 例例5-21 求出求出 的分子、分母的分子、分母 32 1612 8f xxx syms x; f=1/(x3)+6/x/x+12/x+8; n,d=numden(f) MATLAB 7.X程序設計程序設計 38/44 例例5-22 求出符號矩陣求出符號矩陣 各元素的分子、分母多項式。各元素的分子、分母多項式。 2 3 2 3 1 21 411 4 x xx xxx syms x; A=3/x/x/x+1 x2/(

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論