第三講-MATLAB的符號運算課件_第1頁
第三講-MATLAB的符號運算課件_第2頁
第三講-MATLAB的符號運算課件_第3頁
第三講-MATLAB的符號運算課件_第4頁
第三講-MATLAB的符號運算課件_第5頁
已閱讀5頁,還剩45頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

6/8/20231第三講MATLAB的符號運算——Matlab

不僅具有數(shù)值運算功能,還開發(fā)了在Matlab環(huán)境下實現(xiàn)符號計算的工具包SymbolicMathToolbox。符號工具箱在Matlab中引入新的數(shù)據(jù)類型——符號對象sym。6/8/20232符號運算的功能符號表達(dá)式、符號矩陣的創(chuàng)建因式分解、展開和化簡符號代數(shù)方程求解符號微積分符號微分方程6/8/20233在數(shù)值計算中,包括輸入、輸出及中間過程,變量都是數(shù)值變量,而在符號運算中,變量都以字符形式保存和運算,即使是數(shù)字也被當(dāng)作變量來處理。符號表達(dá)式包括符號函數(shù)和符號方程,他們創(chuàng)建的方式是一樣的,最簡單易用的創(chuàng)建方法和MATLAB字符串變量的生成方法相同。6/8/20234

與數(shù)值運算的區(qū)別

※數(shù)值運算中必須先對變量賦值,然后才能參與運算。

※符號運算無須事先對獨立變量賦值,運算結(jié)果以標(biāo)準(zhǔn)的符號形式表達(dá)。6/8/202353.1符號表達(dá)式的生成創(chuàng)建符號函數(shù)

f=‘log(x)’創(chuàng)建符號方程equation=‘a(chǎn)*x^2+b*x+c=0’創(chuàng)建符號微分方程Diffeq=‘Dy-y=x’注:由這種方法創(chuàng)建的符號表達(dá)式對空格是很敏感的,因此不要在字符間亂加空格符.符號表達(dá)式在MATLAB被看作是1ⅹ1階的符號矩陣,因此可用sym命令來創(chuàng)建.f——符號變量名log(x)——符號表達(dá)式''——符號標(biāo)識符號表達(dá)式一定要用''

單引號括起來matlab才能識別。6/8/20236f=sym(‘sin(x)’)ff=sym(‘sin(x)^2=0’)另外一種符號函數(shù)的創(chuàng)建方法為syms命令SymxF=sin(x)+cos(x)symsabc%syms可同時定義多個變量6/8/202373.2符號和數(shù)值之間的轉(zhuǎn)化有時符號運算的目的是為了得到精確的數(shù)值解,這樣就需要對得到的解析解進(jìn)行數(shù)值轉(zhuǎn)換。在symbolic中有三種不同的算術(shù)運算:數(shù)值類型

matlab的浮點算術(shù)運算有理數(shù)類型

maple的精確符號運算vpa類型

maple的任意精度算術(shù)運算6/8/20238浮點算術(shù)運算1/2+1/3

--(定義輸出格式formatlong)ans=0.83333333333333符號運算sym(1/2)+(1/3)ans=5/6--精確解6/8/20239解析解(精確解)進(jìn)行數(shù)值轉(zhuǎn)化的兩個函數(shù).

digits(n)——函數(shù)設(shè)置有效個數(shù)為n的近似解精度.vpa(x,n)——符號表達(dá)式在digits(n)精度下的數(shù)值解.digits(25)vpa(1/2+1/3)ans=.83333333333333333333333336/8/202310numeric(s):將不含自由變量的符號表達(dá)式轉(zhuǎn)換為數(shù)值形式,其效果double(sym(s))相同.(舊版中的數(shù)值轉(zhuǎn)化函數(shù)).6/8/202311vpa(5/6,40)

ans=.8333333333333333333333333333333333333333a=sym('[1/4,exp(1);log(3),3/7]')a=[1/4,exp(1)][log(3),3/7]vpa(a,10)ans=[.2500000000,2.718281828][1.098612289,.4285714286]6/8/2023123.2符號矩陣的創(chuàng)建數(shù)值矩陣A=[1,2;3,4]A=[a,b;c,d]——不識別用matlab函數(shù)sym創(chuàng)建矩陣(symbolic的縮寫)命令格式:A=sym('[]')

※符號矩陣內(nèi)容同數(shù)值矩陣

※需用sym指令定義

※需用''標(biāo)識6/8/202313例如:A=sym('[a,2*b;3*a,0]')A=[a,2*b][3*a,0]

這就完成了一個符號矩陣的創(chuàng)建。注意:符號矩陣的每一行的兩端都有方括號,這是與matlab數(shù)值矩陣的一個重要區(qū)別。6/8/202314用字符串直接創(chuàng)建矩陣

模仿matlab數(shù)值矩陣的創(chuàng)建方法需保證同一列中各元素字符串有相同的長度。例:A=['[a,2*b]';'[3*a,0]']A=[a,2*b][3*a,0]6/8/202315例:創(chuàng)建符號矩陣symsabcdefghA=[ab;cd],B=[ef;gh],C=A*BD=sym('[1/(x+t),sin(x);1,exp(x)]')B=[e,f][g,h]A=[a,b][c,d]C=[a*e+b*g,a*f+b*h][c*e+d*g,c*f+d*h]D=[1/(x+t),sin(x)][1,exp(x)]6/8/202316符號矩陣的修改a.直接修改可用、鍵找到所要修改的矩陣,直接修改b.指令修改

①A(行標(biāo),列標(biāo))=符號表達(dá)式

②A1=subs(S,‘new',‘old')6/8/202317例如:A=[a,2*b][3*a,0]A1=subs(A,'c','b')A2=[a,2*c][3*a,4*c]

A(2,2)='4*b'A=[a,2*b][3*a,4*b]6/8/202318符號矩陣與數(shù)值矩陣的轉(zhuǎn)換將數(shù)值矩陣轉(zhuǎn)化為符號矩陣函數(shù)調(diào)用格式: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]6/8/202319將符號矩陣轉(zhuǎn)化為數(shù)值矩陣函數(shù)調(diào)用格式:double(A)、int8(A)、int16(A)A=[1/3,5/2][10/7,2/5]double(A)int8(A)ans

=ans=0.33332.5000031.42860.4000106/8/202320二、符號運算1、符號矩陣基本運算數(shù)值運算中,所有矩陣運算操作指令都比較直觀、簡單。例如:a=b+c;

a=a*b;A=2*a^2+3*a-5等。

符號運算也是采用與數(shù)值運算相同的運算符。6/8/202321符號矩陣的基本運算符號矩陣的基本運算與數(shù)值矩陣的基本運算相類似。1)基本運算符:+、-、*、\、/、^、.*、.\、./、.^、’

、.’2)三角函數(shù)與反三角函數(shù):sin、cos、tan、……3)指數(shù)、對數(shù)函數(shù):sqrt、exp、log、……4)復(fù)數(shù)函數(shù):real、imag、conj、abs5)矩陣函數(shù):det、inv、rank、轉(zhuǎn)

……(沒有norm)6)矩陣元素的抽取:diag、tril、triu6/8/202322例1:f=sym(‘2*x^2+3*x-5’);

g=sym(‘x^2+x-7’);

h=f+gh=3*x^2+4*x-12例2:f=sym('cos(x)');g=sym('sin(2*x)');

f/g+f*g

ans=cos(x)/sin(2*x)+cos(x)*sin(2*x)6/8/202323例1:f=2*x^2+3*x-5;g=x^2+x-7;>>symsx>>f=2*x^2+3*x-5;g=x^2+x-7;>>h=f+gh=3*x^2+4*x-12例2:f=cos(x);g=sin(2*x);>>symsx>>f=cos(x);g=sin(2*x);>>f/g+f*gans=cos(x)/sin(x)+cos(x)*sin(x)

6/8/202324例3.71符號矩陣的基本操作和運算x=reshape(sym(0:3),2,2);symst;y=x.^2,z=x*x,w=inv(z),w([24])=0,wt=expm(w*t)symsabc;t=[ab*2c+3;456;cba],sum(t)reshape:符號矩陣的變形;expm:符號矩陣的冪運算;sum:符號矩陣按列求和6/8/2023252符號矩陣其它運算:1.r=collect(S,v)合并同類項,S是符號表達(dá)式,v是變量或表達(dá)式,r是合并同類項后的結(jié)果,將符號表達(dá)式中的各元素的v的同冪項系數(shù)合并。r=collect(S)對由findsym函數(shù)返回的默認(rèn)變量進(jìn)行同類項合并。6/8/202326例1.按不同的方式合并同冪項EXPR=sym('(x^2+x*exp(-t)+1)*(x+exp(-t))');expr1=collect(EXPR)expr2=collect(EXPR,'exp(-t)')2.factor(S)符號計算的因式分解,S是待分解的符號多項式例2.factor指令的使用(1)除x外不含其他自由變量的情況(2)含其他自由變量的情況之一

symsax;f2=x^2-a^2;f1=x^4-5*x^3+5*x^2+5*x-6;factor(f2)factor(f1)(3)對正整數(shù)的質(zhì)數(shù)分解,若正整數(shù)數(shù)大于252,則用factor(sym(‘N’))factor(1025),factor(sym(‘12345678901234567890’),6/8/2023273.expand(S)對符號多項式或函數(shù)S進(jìn)行展開例:symsxy;expand((x+1)^3)expand(sin(x+y))4.r=simple(S)或r=simplify(S)對符號表達(dá)式S進(jìn)行化簡例3.簡化(1)運用simplify簡化

symsx;f=(1/x^3+6/x^2+12/x+8)^(1/3);sfy1=simplify(f),sfy1=simplify(sfy1)(2)運用simple簡化

g1=simple(f),g2=simple(g1)說明:simple給出的簡化式比simplify給出的更短6/8/202328例4.簡化ff=cos(x)+sqrt(-sin(x)^2);ssfy1=simplify(ff),ssfy2=simplify(ssfy1)

gg1=simple(ff),gg2=simple(gg1)5.subs(S,old,new)把符號變量中的變量old用new代替,new可以是一個符號,也可以是具體的數(shù)例5.用簡單的算例演示subs的置換規(guī)則(1)產(chǎn)生符號函數(shù)(4)雙精度數(shù)值置換

symsax;f3=subs(f,{a,x},{2,pi/3})f=a*sin(x)+5;(2)符號變量置換(5)數(shù)值數(shù)組置換之一f1=subs(f,‘sin(x)’,sym(‘y’))f4=subs(subs(f,a,2),x,0:pi/6:pi)(3)符號常數(shù)置換(6)數(shù)值數(shù)組置換之二f2=subs(f,{a,x},{2,sym(pi/3)})f5=subs(f,{a,x},{0:6,0:pi/6:pi})6/8/202329例:>>symsxy>>f=2*x+y;>>x=3,y=4;>>subs(f)>>subs(f,x,’a’)>>symsxyab>>f=2*x+y;>>subs(f,[x,y],[3,4])>>subs(f,{x,y},{3,4})>>subs(f,x,[1:3])>>subs(f,{x,y},{[1:3],[5:7]})

>>subs(f,{x,y},{a+b,a-b})>>subs(f,{x,y},{x+y,x-y})ans=10ans=2*a+yans=10ans=[2+y,4+y,6+y]ans=[71013]ans=3*a+b?6/8/2023305.符號表達(dá)式的”秦九昭型”重寫horner(f):把多項式分解成嵌套形式;horner(x^3-6*x^2+11*x-6)Ans=x*(x*(x-6)+11)-66.分式通分[n,d]=numden(EXPR):提取表達(dá)式EXPR的最小分母公因式d和相應(yīng)的分子多項式n;[n,d]=numden(x/y+y/x)n=x^2+y^2d=y*x6/8/202331(二)導(dǎo)數(shù)、極值和積分、Taylor公式及MATLAB中的實現(xiàn)1.極限運算命令功能limit(f,x,a)計算limit(f,x,inf)計算limit(f,x,a,'right')計算單側(cè)極限limit(f,x,a,'left')計算單側(cè)極限注意:在左右極限不相等或左右極限有一個不存在時,MATLAB的默認(rèn)狀態(tài)是求右極限。6/8/202332例8.求極限與極限

symsx;y1=(1+4*x)^(1/x);y2=(exp(x)-1)/x;limit(y1,x,0)limit(y2,x,0)例9.求極限

symsx;y=sqrt(x)-2^(-1/x);limit(y,x,0,'right')2.求導(dǎo)運算(1)一元函數(shù)的求導(dǎo)

diff(f)diff(f,n)例10.求函數(shù)的二階導(dǎo)數(shù)

symsx;f=3*x^3+5*x+1;diff(f,2)例11.設(shè),求

symsx;y=3*x^2-2*x+1;B=diff(y),x=1;

eval(B)

6/8/202333(2)多元函數(shù)的偏導(dǎo)數(shù)

diff(f,xi)diff(f,xi,n)例12.求關(guān)于x的偏導(dǎo)數(shù)。

symsxy;z=x^2*sin(2*y);B=diff(z,x)3.積分運算(1)一元函數(shù)的不定積分

int(f)求函數(shù)f對默認(rèn)變量的不定積分,用于函數(shù)只有一個變量的情況

int(f,v)求符號函數(shù)f對變量v的不定積分例13.計算

symsx;y=1/(sin(x)^2*cos(x)^2);

int(y)pretty(int(y))例14.計算

symsxz;B=int(x/(1+z^2),z)

6/8/202334(2)一元函數(shù)的定積分

int(f,x,a,b)用微積分基本公式計算定積分例15.求

symsx;y=(x^2+sin(x))/(1+x^2);

int(y,x,-1,1)(3)多重積分運算

int(int(f,y),x)計算不定積分

int(int(f,y,c,d),x,a,b)計算不定積分例16.計算

symsxy;

int(int(x^2+y^2+1,y,x,x+1),x,0,1)6/8/2023354.函數(shù)的Taylor展開

taylor(f)將函數(shù)f展開成默認(rèn)變量的6階麥克勞林(Maclaurin)

公式

taylor(f,n)將函數(shù)f展開成默認(rèn)變量的n階麥克勞林(Maclaurin)

公式

taylor(f,n,v,a)將函數(shù)f(v)在v=a處展開成n階Taylor公式例17.將函數(shù)展開為x的6階麥克勞林(Maclaurin)公式

symsx;f=x*atan(x)-log(sqrt(1+x^2));

taylor(f)例18.將函數(shù)展開為關(guān)于(x-2)的最高次為4的冪級數(shù)

symsx;f=1/x^2;

taylor(f,4,x,2);pretty(taylor(f,4,x,2))6/8/202336(三)符號代數(shù)方程求解

matlab符號運算能夠解一般的線性方程、非線性方程及一般的代數(shù)方程、代數(shù)方程組。當(dāng)方程組不存在符號解時,又無其他自由參數(shù),則給出數(shù)值解。命令格式:solve(f)——求一個方程的解solve(f1,f2,…fn)——求n個方程的解6/8/202337

例1.f=ax2+bx+c求解f='a*x^2+b*x+c';solve(f)——對缺省變量x求解ans=[1/2/a*(-b+(b^2-4*a*c)^(1/2))][1/2/a*(-b-(b^2-4*a*c)^(1/2))]計算機格式一般格式6/8/202338

solve(f,'b')——對指定變量b求解

ans=

-(a*x^2+c)/x例2.符號方程cos(x)=sin(x)

tan(2*x)=sin(x)求解

f1=solve('cos(x)=sin(x)'), f1= 1/4*pi6/8/202339f2=solve('tan(2*x)=sin(x)')f2= [0][pi][atan(1/2*(-2*3^(1/2))^(1/2),1/2+1/2*3^(1/2))][atan(-1/2*(-2*3^(1/2))^(1/2),1/2+1/2*3^(1/2))][atan(1/2*2^(1/2)*3^(1/4)/(1/2-1/2*3^(1/2)))+pi][-atan(1/2*2^(1/2)*3^(1/4)/(1/2-1/2*3^(1/2)))-pi]

6/8/202340例3.解方程組

x+y+z=1

x-y+z=22x-y-z=1g1='x+y+z=1',g2='x-y+z=2',g3='2*x-y-z=1'f=solve(g1,g2,g3)或者f=solve('x+y+z=1','x-y+z=2','2*x-y-z=1')6/8/202341f=x:[1x1sym] f.x

ans=2/3 y:[1x1sym] f.y

ans=-1/2z:[1x1sym] f.z

ans=5/6

[x,y,z]=solve('x+y+z=1','x-y+z=2','2*x-y-z=1')x=2/3y=-1/2z=5/66/8/202342(四).

符號微分方程求解

——用一個函數(shù)可以方便地得到微分方程的符號解符號微分方程求解指令:dsolve命令格式:dsolve(f,g)f——微分方程,可多至12個微分方程的求解;g為初始條件默認(rèn)自變量為‘t',可任意指定自變量‘x','u

溫馨提示

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

評論

0/150

提交評論