數(shù)學(xué)軟件Matlab課件_第1頁
數(shù)學(xué)軟件Matlab課件_第2頁
數(shù)學(xué)軟件Matlab課件_第3頁
數(shù)學(xué)軟件Matlab課件_第4頁
數(shù)學(xué)軟件Matlab課件_第5頁
已閱讀5頁,還剩83頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

數(shù)學(xué)軟件Matlab——Matlab符號運算1數(shù)學(xué)軟件Matlab——Matlab符號運算1主要內(nèi)容Matlab符號運算介紹符號對象與基本符號運算

symvar、subs和

vpa

常見的符號計算(重點內(nèi)容)2主要內(nèi)容Matlab符號運算介紹2符號運算

計算以推理方式進(jìn)行,不受計算誤差累積所帶來的困擾

符號計算指令的調(diào)用比較簡單,與教科書上的公式相近

符號計算可以給出完全正確的封閉解,或任意精度的數(shù)值解(封閉解不存在時)

符號計算所需的運行時間相對較長

符號運算的特點

3符號運算計算以推理方式進(jìn)行,不受計算誤差累積所帶來的困擾Matlab符號運算Matlab符號運算是通過符號數(shù)學(xué)工具箱(SymbolicMathToolbox)來實現(xiàn)的。

Matlab的符號數(shù)學(xué)工具箱可以完成幾乎所有得符號運算功能,如:符號表達(dá)式的運算,符號矩陣的運算,符號微積分,符號作圖,符號代數(shù)方程求解,符號微分方程求解等。此外,該工具箱還支持可變精度運算,即支持以指定的精度返回結(jié)果。Matlab符號運算4Matlab符號運算Matlab符號運算是通過符號數(shù)學(xué)符號運算舉例

求一元二次方程ax2+bx+c=0

的根solve('a*x^2+b*x+c=0')

求的根f(x)=(cos

x)2

的一次導(dǎo)數(shù)x=sym('x');diff(cos(x)^2)

計算f(x)=x2

在區(qū)間[a,b]

上的定積分symsabx;int(x^2,a,b)5符號運算舉例求一元二次方程ax2+bx+c=內(nèi)容提要Matlab符號運算介紹

符號對象與基本符號運算

symvar、subs和vpa常見的符號計算6內(nèi)容提要Matlab符號運算介紹6

在進(jìn)行符號運算時,必須先定義基本的符號對象,可以是

符號變量、符號表達(dá)式等符號對象是一種數(shù)據(jù)結(jié)構(gòu)符號對象符號表達(dá)式:含有符號對象的表達(dá)式稱

符號矩陣/數(shù)組:元素為符號表達(dá)式的矩陣/數(shù)組Matlab符號對象7在進(jìn)行符號運算時,必須先定義基本的符號對象,可以是

sym

用來建立單個符號對象,一般調(diào)用格式為:符號對象的定義/聲明:sym、syms符號對象的建立例:a=sym('a')符號變量

=

sym(x)參數(shù)x

可以是一個數(shù)或數(shù)值矩陣,也可以是字符串a(chǎn)

是符號變量b

是符號常量b=sym('1/3')C

是符號矩陣C=sym('[1ab;cd]')8sym用來建立單個符號對象,一般調(diào)用格式為:符號對象的符號對象的建立syms符號變量1符號變量2...符號變量n例:symsabc;a=sym('a');b=sym('b');c=sym('c');

syms

用來聲明多個符號變量,一般調(diào)用格式為:符號對象的定義/聲明:sym、syms9符號對象的建立syms符號變量1符號變量2...符號例:建立符號表達(dá)式通常有以下2種方法:(1)用sym

函數(shù)直接建立符號表達(dá)式

(2)使用已經(jīng)定義的符號變量組成符號表達(dá)式y(tǒng)=sym('sin(x)+cos(x)')x=sym('x');y=sin(x)+cos(x)符號表達(dá)式symsx;y=sin(x)+cos(x)符號表達(dá)式:含符號對象的表達(dá)式10例:建立符號表達(dá)式通常有以下2種方法:y=sym('sMatlab符號運算采用的運算符和基本函數(shù),在形狀、名稱和使用上,都與數(shù)值計算中的運算符和基本函數(shù)完全相同基本符號運算普通運算:數(shù)組運算:矩陣轉(zhuǎn)置:基本運算基本數(shù)學(xué)函數(shù)三角函數(shù)與反三角函數(shù)、指數(shù)函數(shù)、對數(shù)函數(shù)等sin,cos,asin,acos,exp,log,abs,diag,tril,triu,...+

-

*

\

/

^.*.\./.^'.'11Matlab符號運算采用的運算符和基本函數(shù),在形狀、名稱和符號矩陣A=sym('[1+x,sin(x);5,exp(x)]')

使用

sym

函數(shù)直接生成

將數(shù)值矩陣轉(zhuǎn)化成符號矩陣

符號矩陣中元素的引用和修改B=[2/3,sqrt(2);5.2,log(3)];C=sym(B)A=sym('[1+x,sin(x);5,exp(x)]');A(1,2)

%引用A(2,2)=sym('cos(x)')

%重新賦值

符號矩陣的生成12符號矩陣A=sym('[1+x,sin(x);5,ex內(nèi)容提要Matlab符號運算介紹符號對象與基本符號運算

symvar、subs和

vpa常見的符號計算13內(nèi)容提要Matlab符號運算介紹13symvarsymvar(s)symvar(s,N)列出符號表達(dá)式中的符號變量按字母順序列出符號表達(dá)式s

中的所有符號變量列出符號表達(dá)式

s

中離x

最近的N

個符號變量若有兩個符號變量與x

的距離相等,則ASCII碼大者優(yōu)先

常量pi,i,j

不作為符號變量f=sym('2*v-3*y+z^2+5*a')symvar(f)symvar(f,2)例:14symvarsymvar(s)symvar(s,N)列出subs用a

替換符號表達(dá)式

s

中的符號變量x這里a

可以是數(shù)/變量/表達(dá)式或符號變量/表達(dá)式符號替換用給定的數(shù)據(jù)替換符號表達(dá)式中的指定的符號變量subs(s,x,a)symsxyuv;f1=2*x+y-1;f2=subs(f1,x,u)f3=subs(f1,y,2+3)f3=subs(f1,{x,y},{u,v})例:15subs用a替換符號表達(dá)式s中的符號變量x符號subs舉例f=sym('2*u');f1=subs(f,'u',2)f2=subs(f,'u','u+2')f3=subs(f,'u',[1,2])a=3;f4=subs(f2,'u',a+2)f5=subs(f2,'u','a+2')symsxy;f6=subs(f,'u',x+y)f7=subs(f6,{x,y},{1,2})f8=subs(f6,{x,y},{x+y,x+y})例:指出下面各條語句的輸出結(jié)果符號變量若沒有聲明,則需要加上單引號!f=2*uf1=4f2=2*u+4f3=[2,4]f4=14f5=2*a+8f6=2*x+2*yf7=6f8=4*x+4*y16subs舉例f=sym('2*u');例:指出下面各條語句vpa計算表達(dá)式s

的值,保留n

位有效數(shù)字返回值是符號對象可變精度vpa(s,n)x1=vpa(sin(pi/2),10)x2=vpa(pi^3,3)x3=vpa(pi,100)例:17vpa計算表達(dá)式s的值,保留n位有效數(shù)字可變精度內(nèi)容提要Matlab符號運算介紹符號對象與基本符號運算

symvar、subs和vpa

常見的符號計算(六類運算)

因式分解、展開、合并、簡化、通分和反函數(shù)等

計算極限

計算導(dǎo)數(shù)

計算積分

符號級數(shù)求和

代數(shù)方程和微分方程的求解(重點與難點)18內(nèi)容提要Matlab符號運算介紹因式分解、展開、合并、因式分解factor(f)symsx;f=x^6+1;factor(f)

factor

也可用于正整數(shù)的分解s=factor(100)factor(12345678901234567890)

%ERRORfactor(sym('12345678901234567890'))對大整數(shù)進(jìn)行因式分解時可以先將其轉(zhuǎn)化成符號常量例:例:

因式分解19因式分解factor(f)symsx;f=x^6+1;函數(shù)展開expand(f)symsx;f=(x+1)^6;expand(f)多項式展開三角函數(shù)展開symsxy;f=sin(x+y);expand(f)函數(shù)展開例:例:20函數(shù)展開expand(f)symsx;多項式展開三合并同類項symsxy;f=x^2*y+y*x+y^2+2*x;collect(f)collect(f,y)例:collect(f,v)%按指定變量v進(jìn)行合并collect(f)%按默認(rèn)變量進(jìn)行合并合并同類項

默認(rèn)變量:symvar(f)

的返回結(jié)果symsuv;g=u^2*v+u*v^3-u^2+v;collect(g)21合并同類項symsxy;f=x^2*y+y*x+y^函數(shù)簡化y=simplify(f)函數(shù)簡化

對符號表達(dá)式f

進(jìn)行簡化symsx;f=sin(x)^2+cos(x)^2;y=simplify(f)例:22函數(shù)簡化y=simplify(f)函數(shù)簡化對符號表達(dá)式函數(shù)簡化y=simple(f)函數(shù)簡化

f嘗試多種不同的方法(包括simplify)進(jìn)行簡化,

以尋求其最簡短形式例:化簡symsx;f=(cos(x)^2-sin(x)^2)*sin(2*x)*(exp(2*x)

...

-2*exp(x)+1)/(exp(2*x)-1);y1=simplify(f)y2=simple(f)23函數(shù)簡化y=simple(f)函數(shù)簡化對f嘗試多種不函數(shù)簡化[N,D]=numden(f)通分

N

為通分后的分子,D

為通分后的分母symsxy;f=x/y+y/x;[N,D]=numden(f

)[n,d]=numden(sym(112/1024))例:24函數(shù)簡化[N,D]=numden(f)通分N為通分后的horner

多項式

horner

多項式:嵌套形式的多項式symsx;f=x^4+2*x^3+4*x^2+x+1;g=horner(f)例:25horner多項式horner多項式:嵌套形式的多項式求反函數(shù)反函數(shù)finverse(f,v)%

求f

關(guān)于指定變量v

的反函數(shù)finverse(f)%

求f

關(guān)于默認(rèn)變量的反函數(shù)symsxt;f=x^2+2*t;g1=finverse(f,x)g2=finverse(f,t)例:計算函數(shù)的反函數(shù)26求反函數(shù)反函數(shù)finverse(f,v)%求f關(guān)計算極限limit(f,x,a)

%

計算limit(f,a)

%

當(dāng)默認(rèn)變量趨向于a時的極限limit(f)

%

計算a=0時的極限limit(f,x,a,'right')

%

計算右極限limit(f,x,a,'left')

%

計算左極限例:計算

,symsxhn;L=limit((log(x+h)-log(x))/h,h,0)M=limit((1-x/n)^n,n,inf)

計算極限27計算極限limit(f,x,a)%計算例:計算計算導(dǎo)數(shù)g=diff(f,v)

%求符號表達(dá)式

f

關(guān)于變量

v

的導(dǎo)數(shù)g=diff(f)

%

計算關(guān)于默認(rèn)變量的導(dǎo)數(shù)g=diff(f,v,n)

%求

f

關(guān)于

v

n

階導(dǎo)數(shù)

計算導(dǎo)數(shù)symsx;f=sin(x)+3*x^2;g1=diff(f,x)g2=diff(f,x,3)例:28計算導(dǎo)數(shù)g=diff(f,v)%求符號表達(dá)式f關(guān)于計算積分int(f,v,a,b)

%

計算定積分int(f,a,b)

%

計算關(guān)于默認(rèn)變量的定積分int(f,v)

%

計算不定積分int(f)

%

計算關(guān)于默認(rèn)變量的不定積分symsx;f=(x^2+1)/(x^2-2*x+2)^2;I=int(f,x)K=int(exp(-x^2),x,0,inf)例:計算和

計算積分29計算積分int(f,v,a,b)%計算定積分syms符號級數(shù)求和symsn;f=1/n^2;S=symsum(f,n,1,inf)S100=symsum(f,n,1,100)symsum(f,v,a,b)%

級數(shù)求和symsum(f,a,b)%

關(guān)于默認(rèn)變量求和例:計算級數(shù)及其前100項的部分和S100例:計算函數(shù)級數(shù)symsnx;f=x/n^2;S=symsum(f,n,1,inf)

符號級數(shù)求和30符號級數(shù)求和symsn;f=1/n^2;symsum(f代數(shù)方程求解solve(f,v)%求方程關(guān)于指定自變量的解詳細(xì)用法見Matlab08:多項式運算與代數(shù)方程求解器

代數(shù)方程求解這里f

可以用字符串表示或符號表達(dá)式

solve

也可解方程組(通常是非線性的)得不到解析解時,給出數(shù)值解例:solve('2*x-3')%

solve('2*x-3=0')symsx;solve(2*x-3)%

不能寫成

solve(2*x-3=0)symsx;solve(2*x-sin(x)+1)31代數(shù)方程求解solve(f,v)%求方程關(guān)于指定自變量微分方程求解

用Maltab自帶函數(shù)解初值問題

求微分方程解析解:dsolve

求微分方程數(shù)值解*(自學(xué),選學(xué)):

ode45、ode23、

ode113、ode23t、ode15s、ode23s、ode23tb32微分方程求解用Maltab自帶函數(shù)解初值問題求微分方dsolve求解析解

dsolve的使用y=dsolve('eq1','eq2',...,'cond1','cond2',...,'v')其中

y為輸出,

eq1、eq2、...為微分方程,cond1、cond2、...為初值條件,v

為自變量。例1:求微分方程的通解,并驗證。y=dsolve('Dy+2*x*y=x*exp(-x^2)','x')symsx;diff(y)+2*x*y-x*exp(-x^2)33dsolve求解析解dsolve的使用y=dsolvedsolve的使用

幾點說明如果省略初值條件,則表示求通解;如果省略自變量,則默認(rèn)自變量為t

dsolve('Dy=2*x','x');%

dy/dx=2xdsolve('Dy=2*x');%dy/dt=2x若找不到解析解,則返回其積分形式。微分方程中用D

表示對自變量的導(dǎo)數(shù),如:Dyy';D2yy'';D3yy'''34dsolve的使用幾點說明如果省略初值條件,則表示求通例2:求微分方程在初值條件下的特解,并畫出解函數(shù)的圖形。y=dsolve('x*Dy+y-exp(x)=0','y(1)=2*exp(1)','x')ezplot(y);dsolve的使用35例2:求微分方程在初值條例3:求微分方程組

在初值條件下的特解,并畫出解函數(shù)的圖形。[x,y]=dsolve('Dx+5*x+y=exp(t)','Dy-x-3*y=0',...'x(0)=1','y(0)=0','t')ezplot(x,y,[0,1.3]);注:解微分方程組時,如果所給的輸出個數(shù)與方程個數(shù)相同,則方程組的解按詞典順序輸出;如果只給一個輸出,則輸出的是一個包含解的結(jié)構(gòu)(structure)類型的數(shù)據(jù)。dsolve的使用36例3:求微分方程組例:[x,y]=dsolve('Dx+5*x=0','Dy-3*y=0',...'x(0)=1','y(0)=1','t')r=dsolve('Dx+5*x=0','Dy-3*y=0',...'x(0)=1','y(0)=1','t')這里返回的r

是一個結(jié)構(gòu)類型的數(shù)據(jù)r.x%查看解函數(shù)

x(t)r.y%查看解函數(shù)

y(t)只有很少一部分微分方程(組)能求出解析解。

大部分微分方程(組)只能利用數(shù)值方法求數(shù)值解。dsolve的輸出個數(shù)只能為一個或與方程個數(shù)相等dsolve的使用37例:[x,y]=dsolve('Dx+5*x=0','Dy-上機作業(yè)教材P33的習(xí)題6~10,寫入文件m04_1.m;2.教材P32的習(xí)題4,寫入文件m04_2.m;3.求解下列微分方程(組),寫入文件m04_3.m,并且對于初值問題還要求畫出解函數(shù)的圖形;(5)(6)選做。38上機作業(yè)教材P33的習(xí)題6~10,寫入文件m04_1.m;2上機要求將完成每題所用的命令寫入一個規(guī)定文件名的文件中然后將這些文件作為附件,通過foxmail以郵件形式發(fā)給

admin@system.mail郵件主題為:機號-學(xué)號-姓名其中機號為兩位數(shù)三個字段之間用英文狀態(tài)下的減號鏈接

上機要求強調(diào)39上機要求將完成每題所用的命令寫入一個規(guī)定文件名的文件中上機求微分方程數(shù)值解*(自學(xué),選學(xué))[T,Y]=solver(odefun,tspan,y0)其中y0

為初值條件,tspan為求解區(qū)間;Matlab在數(shù)值求解時自動對求解區(qū)間進(jìn)行分割,T(列向量)中返回的是分割點的值(自變量),Y(數(shù)組)中返回的是這些分割點上的近似解,其列數(shù)等于因變量的個數(shù)。solver

為Matlab的ODE求解器(可以是ode45、ode23、ode113、ode15s、ode23s、ode23t、ode23tb)沒有一種算法可以有效地解決所有的ODE問題,因此MATLAB提供了多種ODE求解器,對于不同的ODE,可以調(diào)用不同的求解器。40求微分方程數(shù)值解*(自學(xué),選學(xué))[T,Y]=solverMatlab的ODE求解器*(自學(xué),選學(xué))求解器ODE類型特點 說明ode45非剛性單步法;4,5階R-K方法;累計截斷誤差為(△x)3大部分場合的首選方法ode23非剛性單步法;2,3階R-K方法;累計截斷誤差為(△x)3使用于精度較低的情形ode113非剛性多步法;Adams算法;高低精度均可到10-3~10-6

計算時間比

ode45

短ode23t適度剛性采用梯形算法適度剛性情形ode15s剛性多步法;Gear’s反向數(shù)值微分;精度中等若

ode45

失效時,可嘗試使用ode23s剛性單步法;2階Rosebrock算法;低精度當(dāng)精度較低時,計算時間比ode15s

短ode23tb剛性梯形算法;低精度當(dāng)精度較低時,計算時間比ode15s短41Matlab的ODE求解器*(自學(xué),選學(xué))求解器ODE類型特參數(shù)說明*(自學(xué),選學(xué))odefun

為顯式常微分方程,可以用命令inline

定義,或在函數(shù)文件中定義,然后通過函數(shù)句柄調(diào)用。fun=inline('-2*y+2*x^2+2*x','x','y');[x,y]=ode23(fun,[0,0.5],1);注:也可以在tspan

中指定對求解區(qū)間的分割,如:[x,y]=ode23(fun,[0:0.1:0.5],1);%此時x=[0:0.1:0.5][T,Y]=solver(odefun,tspan,y0)求初值問題

的數(shù)值解,求解范圍為[0,0.5]例:42參數(shù)說明*(自學(xué),選學(xué))odefun為顯式常微分方程,可以數(shù)值求解舉例*(自學(xué),選學(xué))如果需求解的問題是高階常微分方程,則需將其化為一階常微分方程組,此時必須用函數(shù)文件來定義該常微分方程組。令

,則原方程可化為求解VerderPol初值問題例:43數(shù)值求解舉例*(自學(xué),選學(xué))如果需求解的問題是高階常微分方程數(shù)值求解舉例*(自學(xué),選學(xué))

先編寫函數(shù)文件

verderpol.mfunctionxprime=verderpol(t,x)globalmu;xprime=[x(2);mu*(1-x(1)^2)*x(2)-x(1)];再編寫腳本文件vdpl.m,在命令窗口直接運行該文件。clear;globalmu;mu=7;y0=[1;0];[t,x]=ode45('verderpol',[0,40],y0);

plot(t,x(:,1),'r-',

t,x(:,2),'b-');44數(shù)值求解舉例*(自學(xué),選學(xué))先編寫函數(shù)文件verderp數(shù)學(xué)軟件Matlab——Matlab符號運算45數(shù)學(xué)軟件Matlab——Matlab符號運算1主要內(nèi)容Matlab符號運算介紹符號對象與基本符號運算

symvar、subs和

vpa

常見的符號計算(重點內(nèi)容)46主要內(nèi)容Matlab符號運算介紹2符號運算

計算以推理方式進(jìn)行,不受計算誤差累積所帶來的困擾

符號計算指令的調(diào)用比較簡單,與教科書上的公式相近

符號計算可以給出完全正確的封閉解,或任意精度的數(shù)值解(封閉解不存在時)

符號計算所需的運行時間相對較長

符號運算的特點

47符號運算計算以推理方式進(jìn)行,不受計算誤差累積所帶來的困擾Matlab符號運算Matlab符號運算是通過符號數(shù)學(xué)工具箱(SymbolicMathToolbox)來實現(xiàn)的。

Matlab的符號數(shù)學(xué)工具箱可以完成幾乎所有得符號運算功能,如:符號表達(dá)式的運算,符號矩陣的運算,符號微積分,符號作圖,符號代數(shù)方程求解,符號微分方程求解等。此外,該工具箱還支持可變精度運算,即支持以指定的精度返回結(jié)果。Matlab符號運算48Matlab符號運算Matlab符號運算是通過符號數(shù)學(xué)符號運算舉例

求一元二次方程ax2+bx+c=0

的根solve('a*x^2+b*x+c=0')

求的根f(x)=(cos

x)2

的一次導(dǎo)數(shù)x=sym('x');diff(cos(x)^2)

計算f(x)=x2

在區(qū)間[a,b]

上的定積分symsabx;int(x^2,a,b)49符號運算舉例求一元二次方程ax2+bx+c=內(nèi)容提要Matlab符號運算介紹

符號對象與基本符號運算

symvar、subs和vpa常見的符號計算50內(nèi)容提要Matlab符號運算介紹6

在進(jìn)行符號運算時,必須先定義基本的符號對象,可以是

符號變量、符號表達(dá)式等符號對象是一種數(shù)據(jù)結(jié)構(gòu)符號對象符號表達(dá)式:含有符號對象的表達(dá)式稱

符號矩陣/數(shù)組:元素為符號表達(dá)式的矩陣/數(shù)組Matlab符號對象51在進(jìn)行符號運算時,必須先定義基本的符號對象,可以是

sym

用來建立單個符號對象,一般調(diào)用格式為:符號對象的定義/聲明:sym、syms符號對象的建立例:a=sym('a')符號變量

=

sym(x)參數(shù)x

可以是一個數(shù)或數(shù)值矩陣,也可以是字符串a(chǎn)

是符號變量b

是符號常量b=sym('1/3')C

是符號矩陣C=sym('[1ab;cd]')52sym用來建立單個符號對象,一般調(diào)用格式為:符號對象的符號對象的建立syms符號變量1符號變量2...符號變量n例:symsabc;a=sym('a');b=sym('b');c=sym('c');

syms

用來聲明多個符號變量,一般調(diào)用格式為:符號對象的定義/聲明:sym、syms53符號對象的建立syms符號變量1符號變量2...符號例:建立符號表達(dá)式通常有以下2種方法:(1)用sym

函數(shù)直接建立符號表達(dá)式

(2)使用已經(jīng)定義的符號變量組成符號表達(dá)式y(tǒng)=sym('sin(x)+cos(x)')x=sym('x');y=sin(x)+cos(x)符號表達(dá)式symsx;y=sin(x)+cos(x)符號表達(dá)式:含符號對象的表達(dá)式54例:建立符號表達(dá)式通常有以下2種方法:y=sym('sMatlab符號運算采用的運算符和基本函數(shù),在形狀、名稱和使用上,都與數(shù)值計算中的運算符和基本函數(shù)完全相同基本符號運算普通運算:數(shù)組運算:矩陣轉(zhuǎn)置:基本運算基本數(shù)學(xué)函數(shù)三角函數(shù)與反三角函數(shù)、指數(shù)函數(shù)、對數(shù)函數(shù)等sin,cos,asin,acos,exp,log,abs,diag,tril,triu,...+

-

*

\

/

^.*.\./.^'.'55Matlab符號運算采用的運算符和基本函數(shù),在形狀、名稱和符號矩陣A=sym('[1+x,sin(x);5,exp(x)]')

使用

sym

函數(shù)直接生成

將數(shù)值矩陣轉(zhuǎn)化成符號矩陣

符號矩陣中元素的引用和修改B=[2/3,sqrt(2);5.2,log(3)];C=sym(B)A=sym('[1+x,sin(x);5,exp(x)]');A(1,2)

%引用A(2,2)=sym('cos(x)')

%重新賦值

符號矩陣的生成56符號矩陣A=sym('[1+x,sin(x);5,ex內(nèi)容提要Matlab符號運算介紹符號對象與基本符號運算

symvar、subs和

vpa常見的符號計算57內(nèi)容提要Matlab符號運算介紹13symvarsymvar(s)symvar(s,N)列出符號表達(dá)式中的符號變量按字母順序列出符號表達(dá)式s

中的所有符號變量列出符號表達(dá)式

s

中離x

最近的N

個符號變量若有兩個符號變量與x

的距離相等,則ASCII碼大者優(yōu)先

常量pi,i,j

不作為符號變量f=sym('2*v-3*y+z^2+5*a')symvar(f)symvar(f,2)例:58symvarsymvar(s)symvar(s,N)列出subs用a

替換符號表達(dá)式

s

中的符號變量x這里a

可以是數(shù)/變量/表達(dá)式或符號變量/表達(dá)式符號替換用給定的數(shù)據(jù)替換符號表達(dá)式中的指定的符號變量subs(s,x,a)symsxyuv;f1=2*x+y-1;f2=subs(f1,x,u)f3=subs(f1,y,2+3)f3=subs(f1,{x,y},{u,v})例:59subs用a替換符號表達(dá)式s中的符號變量x符號subs舉例f=sym('2*u');f1=subs(f,'u',2)f2=subs(f,'u','u+2')f3=subs(f,'u',[1,2])a=3;f4=subs(f2,'u',a+2)f5=subs(f2,'u','a+2')symsxy;f6=subs(f,'u',x+y)f7=subs(f6,{x,y},{1,2})f8=subs(f6,{x,y},{x+y,x+y})例:指出下面各條語句的輸出結(jié)果符號變量若沒有聲明,則需要加上單引號!f=2*uf1=4f2=2*u+4f3=[2,4]f4=14f5=2*a+8f6=2*x+2*yf7=6f8=4*x+4*y60subs舉例f=sym('2*u');例:指出下面各條語句vpa計算表達(dá)式s

的值,保留n

位有效數(shù)字返回值是符號對象可變精度vpa(s,n)x1=vpa(sin(pi/2),10)x2=vpa(pi^3,3)x3=vpa(pi,100)例:61vpa計算表達(dá)式s的值,保留n位有效數(shù)字可變精度內(nèi)容提要Matlab符號運算介紹符號對象與基本符號運算

symvar、subs和vpa

常見的符號計算(六類運算)

因式分解、展開、合并、簡化、通分和反函數(shù)等

計算極限

計算導(dǎo)數(shù)

計算積分

符號級數(shù)求和

代數(shù)方程和微分方程的求解(重點與難點)62內(nèi)容提要Matlab符號運算介紹因式分解、展開、合并、因式分解factor(f)symsx;f=x^6+1;factor(f)

factor

也可用于正整數(shù)的分解s=factor(100)factor(12345678901234567890)

%ERRORfactor(sym('12345678901234567890'))對大整數(shù)進(jìn)行因式分解時可以先將其轉(zhuǎn)化成符號常量例:例:

因式分解63因式分解factor(f)symsx;f=x^6+1;函數(shù)展開expand(f)symsx;f=(x+1)^6;expand(f)多項式展開三角函數(shù)展開symsxy;f=sin(x+y);expand(f)函數(shù)展開例:例:64函數(shù)展開expand(f)symsx;多項式展開三合并同類項symsxy;f=x^2*y+y*x+y^2+2*x;collect(f)collect(f,y)例:collect(f,v)%按指定變量v進(jìn)行合并collect(f)%按默認(rèn)變量進(jìn)行合并合并同類項

默認(rèn)變量:symvar(f)

的返回結(jié)果symsuv;g=u^2*v+u*v^3-u^2+v;collect(g)65合并同類項symsxy;f=x^2*y+y*x+y^函數(shù)簡化y=simplify(f)函數(shù)簡化

對符號表達(dá)式f

進(jìn)行簡化symsx;f=sin(x)^2+cos(x)^2;y=simplify(f)例:66函數(shù)簡化y=simplify(f)函數(shù)簡化對符號表達(dá)式函數(shù)簡化y=simple(f)函數(shù)簡化

f嘗試多種不同的方法(包括simplify)進(jìn)行簡化,

以尋求其最簡短形式例:化簡symsx;f=(cos(x)^2-sin(x)^2)*sin(2*x)*(exp(2*x)

...

-2*exp(x)+1)/(exp(2*x)-1);y1=simplify(f)y2=simple(f)67函數(shù)簡化y=simple(f)函數(shù)簡化對f嘗試多種不函數(shù)簡化[N,D]=numden(f)通分

N

為通分后的分子,D

為通分后的分母symsxy;f=x/y+y/x;[N,D]=numden(f

)[n,d]=numden(sym(112/1024))例:68函數(shù)簡化[N,D]=numden(f)通分N為通分后的horner

多項式

horner

多項式:嵌套形式的多項式symsx;f=x^4+2*x^3+4*x^2+x+1;g=horner(f)例:69horner多項式horner多項式:嵌套形式的多項式求反函數(shù)反函數(shù)finverse(f,v)%

求f

關(guān)于指定變量v

的反函數(shù)finverse(f)%

求f

關(guān)于默認(rèn)變量的反函數(shù)symsxt;f=x^2+2*t;g1=finverse(f,x)g2=finverse(f,t)例:計算函數(shù)的反函數(shù)70求反函數(shù)反函數(shù)finverse(f,v)%求f關(guān)計算極限limit(f,x,a)

%

計算limit(f,a)

%

當(dāng)默認(rèn)變量趨向于a時的極限limit(f)

%

計算a=0時的極限limit(f,x,a,'right')

%

計算右極限limit(f,x,a,'left')

%

計算左極限例:計算

,symsxhn;L=limit((log(x+h)-log(x))/h,h,0)M=limit((1-x/n)^n,n,inf)

計算極限71計算極限limit(f,x,a)%計算例:計算計算導(dǎo)數(shù)g=diff(f,v)

%求符號表達(dá)式

f

關(guān)于變量

v

的導(dǎo)數(shù)g=diff(f)

%

計算關(guān)于默認(rèn)變量的導(dǎo)數(shù)g=diff(f,v,n)

%求

f

關(guān)于

v

n

階導(dǎo)數(shù)

計算導(dǎo)數(shù)symsx;f=sin(x)+3*x^2;g1=diff(f,x)g2=diff(f,x,3)例:72計算導(dǎo)數(shù)g=diff(f,v)%求符號表達(dá)式f關(guān)于計算積分int(f,v,a,b)

%

計算定積分int(f,a,b)

%

計算關(guān)于默認(rèn)變量的定積分int(f,v)

%

計算不定積分int(f)

%

計算關(guān)于默認(rèn)變量的不定積分symsx;f=(x^2+1)/(x^2-2*x+2)^2;I=int(f,x)K=int(exp(-x^2),x,0,inf)例:計算和

計算積分73計算積分int(f,v,a,b)%計算定積分syms符號級數(shù)求和symsn;f=1/n^2;S=symsum(f,n,1,inf)S100=symsum(f,n,1,100)symsum(f,v,a,b)%

級數(shù)求和symsum(f,a,b)%

關(guān)于默認(rèn)變量求和例:計算級數(shù)及其前100項的部分和S100例:計算函數(shù)級數(shù)symsnx;f=x/n^2;S=symsum(f,n,1,inf)

符號級數(shù)求和74符號級數(shù)求和symsn;f=1/n^2;symsum(f代數(shù)方程求解solve(f,v)%求方程關(guān)于指定自變量的解詳細(xì)用法見Matlab08:多項式運算與代數(shù)方程求解器

代數(shù)方程求解這里f

可以用字符串表示或符號表達(dá)式

solve

也可解方程組(通常是非線性的)得不到解析解時,給出數(shù)值解例:solve('2*x-3')%

solve('2*x-3=0')symsx;solve(2*x-3)%

不能寫成

solve(2*x-3=0)symsx;solve(2*x-sin(x)+1)75代數(shù)方程求解solve(f,v)%求方程關(guān)于指定自變量微分方程求解

用Maltab自帶函數(shù)解初值問題

求微分方程解析解:dsolve

求微分方程數(shù)值解*(自學(xué),選學(xué)):

ode45、ode23、

ode113、ode23t、ode15s、ode23s、ode23tb76微分方程求解用Maltab自帶函數(shù)解初值問題求微分方dsolve求解析解

dsolve的使用y=dsolve('eq1','eq2',...,'cond1','cond2',...,'v')其中

y為輸出,

eq1、eq2、...為微分方程,cond1、cond2、...為初值條件,v

為自變量。例1:求微分方程的通解,并驗證。y=dsolve('Dy+2*x*y=x*exp(-x^2)','x')symsx;diff(y)+2*x*y-x*exp(-x^2)77dsolve求解析解dsolve的使用y=dsolvedsolve的使用

幾點說明如果省略初值條件,則表示求通解;如果省略自變量,則默認(rèn)自變量為t

dsolve('Dy=2*x','x');%

dy/dx=2xdsolve('Dy=2*x');%dy/dt=2x若找不到解析解,則返回其積分形式。微分方程中用D

表示對自變量的導(dǎo)數(shù),如:Dyy';D2yy'';D3yy'''78dsolve的使用幾點說明如果省略初值條件,則表示求通例2:求微分方程在初值條件下的特解,并畫出解函數(shù)的圖形。y=dsolve('x*Dy+y-exp(x)=0','y(1)=2*exp(1)','x')ezplot(y);dsolve的使用79例2:求微分方程在初值條例3:求微分方程組

在初值條件下的特解,并畫出解函數(shù)的圖形。[x,y]=dsolve('Dx+5*x+y=exp(t)','Dy-x-3*y=0',...'x(0)=1','y(0)=0','t')ezplot(x,y,[0,1.3]);注:解微分方程組時,如果所給的輸出個數(shù)與方程個數(shù)相同,則方程組的解按詞典順序輸出;如果只給一個輸出,則輸出的是一個包含解的結(jié)構(gòu)(structure)類型的數(shù)據(jù)。dsolve的使用80例3:求微分方程組例:[x,y]=dsolve('Dx+5*x=0','Dy-3*y=0',...'x(0)=1','y(0)=1','t')r=dsolve('Dx+5*x=0','Dy-3*y=0',...'x(0)=1','y(0)=1','t')這里返回的r

是一個結(jié)構(gòu)類型的數(shù)據(jù)r.x%查看解函數(shù)

x(t)r.y%查看解函數(shù)

y(t)只有很少一部分微分方程(組)能求出解析解。

大部分微分方程(組)只能利用數(shù)值方法求數(shù)值解。dsolve的輸出個數(shù)只能為一個或與方程個數(shù)相等dsolve的使用81例:[x,y]=dsolve('Dx+5*x=0','Dy-上機作業(yè)

溫馨提示

  • 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

提交評論