版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第三章-matlab符號運算第一頁,共39頁。一、符號變量、符號表達式和符號方程的生成與數(shù)值運算的區(qū)別:
※數(shù)值運算中必須先對變量賦值,然后才能參與運算。
※符號運算無須事先對獨立變量賦值,運算結果以標準的符號形式表達,可以獲得任意精度的解。※參與符號運算的對象可以是符號變量、符號表達式或符號矩陣。(符號變量也要先定義,后引用)
1、什么是符號運算第一頁第二頁,共39頁。2、符號變量的定義(1)sym函數(shù)
主要功能是創(chuàng)建符號變量、符號表達式或符號矩陣。函數(shù)調用的一般格式為:
x=sym(‘x’)
其目的是將’x’創(chuàng)建為符號變量,以x作為輸出變量名。例:f=sym(‘y’);%定義f是符號變量名,值為符號x
f1=sym('sin(x)+5x');f1——符號變量名sin(x)+5x——符號表達式''
——符號標識,符號表達式一定要用''單引號括起來matlab才能識別。第二頁第三頁,共39頁。''的內容可以是符號表達式,也可以是符號方程。例:
f1=sym('ax^2+bx+c')——二次三項式
f2=sym('ax^2+bx+c=0')——
方程
f3='Dy+y^2=1'——微分方程※符號表達式或符號方程可以賦給符號變量,以后調用方便;也可以不賦給符號變量直接參與運算。第三頁第四頁,共39頁。>>sqrt(2)ans=1.4142%返回數(shù)值結果>>a=sqrt(sym(2))%符號變量a=2^(1/2)%返回符號結果
>>double(x)%求符號的值ans=
1.4142>>sym(2)/sym(5)+
sym(1)/sym(3)%符號表達式ans=11/15%結果為分數(shù)形式>>2/5+1/3ans=0.7333%結果為double形式例3-1符號對象和普通數(shù)據(jù)對象之間的差別第四頁第五頁,共39頁。例3-2用符號運算求解方程組
a,b,x,y均為符號運算量。在符號運算前,應先將a,b,x,y定義為符號運算量。a=sym(‘a(chǎn)’);
b=sym(‘b’);%定義a,b為符號常量,內容為符號a、b。y=2/b;x=sym(‘x’);y=sym(‘y”);’);%定義a,b為符號變量
[x,y]=solve(a*x-b*y-1,a*x+b*y-5,x,y)%以a,b為符號常數(shù),x,y為符號變量即可得到方程組的解:x=3/ay=2/b第五頁第六頁,共39頁。例3-3已知一復數(shù)表達式z=x+i*y,試求其共軛復數(shù),并求該表達式與其共軛復數(shù)乘積的多項式。
命令如下:
x=sym(‘x’,’real’);%把變量x定義為實數(shù)
y=sym(‘y’,’real’);%指定符號變量y為實數(shù)。
z=x+i*y;%定義復數(shù)表達式
conj(z);%求共軛復數(shù)
expand(z*conj(z))%求表達式與其共軛復數(shù)乘積的多項式
ans=x^2+y^2x=sym(‘x’,’unreal’)%去掉’x’的屬性,將’x’創(chuàng)建為純格式的符號變量,不具有任何屬性。第六頁第七頁,共39頁。
syms函數(shù)的功能與sym函數(shù)類似。syms函數(shù)可以在一個語句中同時定義多個符號變量,其一般格式為:
symsarg1arg2…argN
用于將rg1,arg2,…,argN等符號創(chuàng)建為符號型數(shù)據(jù)。例:symsxyz(2)syms函數(shù)第七頁第八頁,共39頁。一般習慣于使用排在字母表中前面的字母作為變量的系數(shù),而用排在后面的字母表示變量。例如:
f=sym(‘a(chǎn)x2+bx+c’)
表達式中的a,b,c通常被認為是常數(shù),用作變量的系數(shù);而將x看作自變量。(3)默認符號變量第八頁第九頁,共39頁。符號表達式由符號變量、函數(shù)、算術運算符等組成。符號表達式的書寫格式與數(shù)值表達式相同。例如,數(shù)學表達式:
其符號表達式為:1+sqr(5*x))/2注意,在定義表達式前應先將表達式中的字符x定義為符號變量。3、符號表達式的生成第九頁第十頁,共39頁。findsym函數(shù):查詢系統(tǒng)默認符號變量個數(shù)及變量名。findsym函數(shù)通常由系統(tǒng)自動調用,在進行符號運算時,系統(tǒng)調用該函數(shù)確定表達式中的符號變量,執(zhí)行相應的操作。
findsym(f):返回表達式f中的所有符號變量。findsym(f,n):返回表達式f中的n個變量例:f=sym(‘cos(alpha)*b*x1+14*y’)findsym(f)%alpha,b,x1,yfindsym(f,2)%x1,y第十頁第十一頁,共39頁。subs函數(shù):將符號表達式中的符號變量用數(shù)值代替。subs(f):顯示符號表達式f。subs(f,new):用new替代符號表達式f的系統(tǒng)默認變量。默認變量的選擇規(guī)則為:對于只包含一個字符的變量,選擇靠近x的變量作為默認變量;如果有兩個變量和x之間的距離相同,則選擇字母表后面的的變量作為默認變量subs(f,old,new):用new替代符號表達式f的系統(tǒng)變量old。第十一頁第十二頁,共39頁。例:>>symsxy>>f=x^2*y+5*x*sqrt(y)f=x^2*y+5*x*y^(1/2)>>subs(f,x,3)ans=9*y+15*y^(1/2)>>subs(f,y,3)ans=3*x^2+5*x*3^(1/2)第十二頁第十三頁,共39頁。將表達式中的自變量定義為符號變量后,賦值給符號函數(shù)名,即可生成符號函數(shù)。例如有一數(shù)學表達式:4、符號函數(shù)的生成其用符號表達式生成符號函數(shù)fxy的過程為:
symsabcxy%定義符號運算量
fxy=(a*x^2+b*y^2)/c^2%生成符號函數(shù)生成符號函數(shù)fxy后,即可用于微積分等符號計算。第十三頁第十四頁,共39頁。例3-5定義一個符號函數(shù)fxy=(a*x2+b*y2)/c2
,分別求該函數(shù)對x、y的導數(shù)和對x的積分。symsabcxy%定義符號變量fxy=(a*x^2+b*y^2)/c^2;%生成符號函數(shù)diff(fxy,x)%符號函數(shù)fxy對x求導數(shù)ans=2*a*x/c^2diff(fxy,y)%符號函數(shù)fxy對y求導數(shù)ans=2*b*y/c^2int(fxy,x)%符號函數(shù)fxy對x求積分ans=1/c^2*(1/3*a*x^3+b*y^2*x)第十四頁第十五頁,共39頁。5、符號方程的生成(1)創(chuàng)建抽象方程
MATLAB中可以創(chuàng)建抽象方程,即只有方程符號,沒有具體表達式的方程。若要創(chuàng)建方程,并計算其一階微分的方法如下:>>f=sym('f(x)');>>symsxh;>>df=(subs(f,x,x+h)-f)/hdf=(f(x+h)-f(x))/h抽象方程在積分變換中有著很多的應用。第十五頁第十六頁,共39頁。(2)創(chuàng)建符號方程創(chuàng)建符號方程的方法有兩種:利用符號表達式創(chuàng)建先創(chuàng)建符號變量,通過符號變量的運算生成符號函數(shù)直接生成符號表達式創(chuàng)建M文件利用M文件創(chuàng)建的函數(shù),可以接受任何符號變量作為輸入,作為生成函數(shù)的自變量>>equation1=sym('sin(x)+cos(x)=1')equation1=sin(x)+cos(x)=1第十六頁第十七頁,共39頁。6、符號和數(shù)值之間的轉化
S=sym(A,flag):將數(shù)值轉化為符號變量,其中參數(shù)flag可以為‘r’,‘d’,‘e’,或者‘f’中的一個。該函數(shù)將數(shù)值標量或者矩陣轉化為參數(shù)形式,該函數(shù)的第二個參數(shù)用于指定浮點數(shù)轉化的方法,該函數(shù)各個取值的意義如表所示:參數(shù)說明rA為有理數(shù)形式dA為十進制數(shù)形式eA為指數(shù)形式fA為浮點數(shù)形式,將數(shù)值表示為'1.F'*2^(e)或者'-1.F'*2^(e)的格式,其中F為13位十六進制數(shù),e為整數(shù)第十七頁第十八頁,共39頁。例:>>t=0.1t=0.1000>>sym(t)%有理數(shù)形式
ans=1/10>>sym(t,'r')%有理數(shù)形式
ans=1/10>>sym(t,'f')%浮點數(shù)形式
ans='1.999999999999a'*2^(-4)第十八頁第十九頁,共39頁。7、任意精度的計算
符號計算的一個非常顯著的特點是:在計算過程中不會出現(xiàn)舍入誤差,從而可以得到任意精度的數(shù)值解。如果希望計算結果精確,可以用符號計算來獲得足夠高的計算精度。符號計算相對于數(shù)值計算而言,需要更多的計算時間和存儲空間。MATLAB工具箱中有三種不同類型的算術運算:數(shù)值型:MATLAB的浮點數(shù)運算;有理數(shù)類型:Maple的精確符號運算;VPA類型:Maple的任意精度算術運算。第十九頁第二十頁,共39頁。在三種運算中,浮點運算速度最快,所需的內存空間小,但是結果精確度最低,而且存在一個舍入誤差。符號運算中的有理數(shù)運算,其時間復雜度和空間復雜度都是最大的,但是,只要時間和空間允許,能夠得到任意精度的結果??勺兙鹊倪\算運算速度和精確度均位于上面兩種運算之間。其具體精度由參數(shù)指定,參數(shù)越大,精確度越高,運行越慢。第二十頁第二十一頁,共39頁。浮點算術運算:
1/2+1/3--(定義輸出格式formatlong)ans=0.83333333333333符號運算:
sym(1/2)+sym(1/3)ans=5/6--精確解任意精度算術運算:
digits(n)——設置可變精度,缺省16位
vpa(x,n)——顯示可變精度計算例:digits(25)vpa(1/2+1/3)ans=.8333333333333333333333333第二十一頁第二十二頁,共39頁。二、符號運算的基本操作符號表達式的四則運算合并符號表達式的同類項符號多項式的因式分解符號表達式的簡化subs函數(shù)用于替換求值反函數(shù)的運算復合函數(shù)的運算第二十二頁第二十三頁,共39頁。1、符號表達式的四則運算>>symsxyab>>fun1=sin(x)+cos(y)fun1=sin(x)+cos(y)>>fun2=a+bfun2=a+b>>fun1+fun2ans=sin(x)+cos(y)+a+b>>fun1*fun2ans=(sin(x)+cos(y))*(a+b)第二十三頁第二十四頁,共39頁。2、合并符號表達式的同類項
>>symsxy>>collect(x^2*y+y*x-x^2-2*x)ans=(y-1)*x^2+(y-2)*x>>f=-1/4*x*exp(-2*x)+3/16*exp(-2*x);>>collect(f)ans=-1/4*x*exp(-2*x)+3/16*exp(-2*x)
R=collect(S,v),對指定的變量v進行合并,如果不指定,則默認為對x進行合并。第二十四頁第二十五頁,共39頁。3、符號多項式的嵌套(horner)>>symsx>>fun1=2*x^3+2*x^2-32*x+40fun1=2*x^3+2*x^2-32*x+40>>horner(fun1)ans=40+(-32+(2+2*x)*x)*xhorner(f)函數(shù):將f轉化為嵌套格式。嵌套格式在多項式求值中可以降低計算的時間復雜度。第二十五頁第二十六頁,共39頁。expand(f)函數(shù):用于符號表達式的展開。其操作對象可以是多種類型,如多項式、三角函數(shù)、指數(shù)函數(shù)等。(P84表3.1)4、符號多項式的展開(expand)>>symsx>>fun1=40+(-32+(2+2*x)*x)*x>>expand(fun1)ans=2*x^3+2*x^2-32*x+40第二十六頁第二十七頁,共39頁。factor(f)函數(shù):實現(xiàn)因式分解功能,如果輸入的參數(shù)為正整數(shù),則返回此數(shù)的素數(shù)因數(shù)。5、符號多項式的因式分解(factor)>>symsx>>fun1=x^2-x-6>>factor(fun1)ans=(x+2)*(x-3)第二十七頁第二十八頁,共39頁。6、符號表達式的簡化
simple(s):實現(xiàn)表達式的化簡,該函數(shù)可以自動選擇化簡所選擇的方法,最后返回表達式的最簡單的形式。函數(shù)的化簡方法包括:simplify、combine(trig)、radsimpconvert(exp)、collect、factor、expand等。
simplify(f):函數(shù)實現(xiàn)表達式的化簡,化簡所選用的方法為Maple中的化簡方法。>>symsx>>fun1=(1/x+7/x^2+12/x+8)^(1/3)fun1=(1/x+7/x^2+12/x+8)^(1/3)>>sfy1=simplify(fun1)sfy1=((13*x+7+8*x^2)/x^2)^(1/3)第二十八頁第二十九頁,共39頁。7、subs函數(shù)用于替換求值
>>symsxyf=x^2*y+5*x*sqrt(y)f=x^2*y+5*x*y^(1/2)>>subs(f,x,3)ans=9*y+15*y^(1/2)>>subs(f,y,3)ans=3*x^2+5*x*3^(1/2)第二十九頁第三十頁,共39頁。8、反函數(shù)的運算(finverse)>>symsxy>>f=x^2+yf=x^2+y>>finverse(f,y)ans=-x^2+y第三十頁第三十一頁,共39頁。9、復合函數(shù)的運算(compose)
>>symsxyztu>>f=1/(1+x^2)>>g=sin(y)>>h=x^t>>p=exp(-y/u)>>compose(f,g)ans=1/(1+sin(y)^2)>>compose(f,g,t)ans=1/(1+sin(t)^2)第三十一頁第三十二頁,共39頁。1、符號矩陣的創(chuàng)建數(shù)值矩陣A=[1,2;3,4]A=[a,b;c,d]——不識別
使用函數(shù)sym直接創(chuàng)建符號矩陣命令格式:A=sym('[]')二、符號矩陣例如:A=sym('[a,2*b;3*a,0]')A=[a,2*b][3*a,0]注意:符號矩陣的每一行的兩端都有方括號,這是與matlab數(shù)值矩陣的一個重要區(qū)別。第三十二頁第三十三頁,共39頁。用字符串直接創(chuàng)建矩陣
模仿matlab數(shù)值矩陣的創(chuàng)建方法需保證同一列中各元素字符串有相同的長度。例:A=['[a,2*b]';'[3*a,0]']
A=[a,2*b][3*a,0]第三十三頁第三十四頁,共39頁。將數(shù)值矩陣轉化為符號矩陣函數(shù)調用格式:sym(A)A=[1/3,2.5;1/0.7,2/5]A=0.33332.50001.42860.4000sym(A)ans=[1/3,5/2][10/7,2/5]雖然矩陣形式?jīng)]有發(fā)生改變,但是在MATLAB7的工作區(qū)間內,系統(tǒng)已經(jīng)生成了一個新的矩陣,其數(shù)據(jù)類型為符號型。第三十四頁第三十五頁,共39頁。④符號矩陣的修改
a.直接修改可用、鍵找到所要修改的矩陣,直接修改
b.指令修改用A1=sym(A,,,'new')來修改。用A1=subs(A,'new','old')來修改例如:A=[a,2*b][3*a,0]A1=sym(A,2,2,‘4*b’)%A(2,2)=
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版應急通訊基站搭棚施工合同參考2篇
- 二零二五版交通事故車輛維修及賠償協(xié)議2篇
- 二零二五年度食品飲料品牌授權銷售合同范本2篇
- 二零二五年度儲罐安裝與環(huán)保驗收合同4篇
- 2025年度個人理財產(chǎn)品投資及收益分配合同4篇
- 2025年度生物質能發(fā)電項目承包清工勞務合同模板4篇
- 二零二五年度玻璃工藝品設計與生產(chǎn)合作協(xié)議
- 二零二五年度轉租協(xié)議甲乙丙三方權益保障合同
- 2025年度跨境電商股權退出撤資協(xié)議書
- 二零二五年度餐廳租賃合同附餐飲行業(yè)趨勢研究合作
- 2025年春新滬科版物理八年級下冊全冊教學課件
- 2025屆高考語文復習:散文的結構與行文思路 課件
- 電網(wǎng)調度基本知識課件
- 拉薩市2025屆高三第一次聯(lián)考(一模)語文試卷(含答案解析)
- 《保密法》培訓課件
- 回收二手機免責協(xié)議書模板
- (正式版)JC∕T 60023-2024 石膏條板應用技術規(guī)程
- (權變)領導行為理論
- 2024屆上海市浦東新區(qū)高三二模英語卷
- 2024年智慧工地相關知識考試試題及答案
- GB/T 8005.2-2011鋁及鋁合金術語第2部分:化學分析
評論
0/150
提交評論