




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、MATLAB程序設計程序設計 主講:李強主講:李強Email: 數學與信息科學學院數學與信息科學學院1.3 MATLAB中函數的數值運算nMATLAB除了可以進行簡單的數值運算外,還可以由用戶自定義函數建立一元或多元數值函數。通過建立函數,可以求解相關的各種問題,如求函數的值、零點、極值、積分等。n1.3.1 數值函數的建立數值函數的建立nMATLAB建立數值函數通常有兩種方式:一種使用inline命令;另一種是通過編寫函數程序,用function來定義函數。 1.3.1 數值函數的建立數值函數的建立n使用inline命令nInline 內聯的nINLINE Construct INLINE
2、object.n INLINE(EXPR) constructs an inline function object from the MATLAB expression contained in the string EXPR. The input arguments are automatically determined by searching EXPR for variable names (see SYMVAR). nIf no variable exists, x is used. nINLINE(EXPR, ARG1, ARG2, .) constructs an inline
3、 function whose input arguments are specified by the strings ARG1, ARG2, . Multicharacter symbol names may be used.nINLINE(EXPR, N), where N is a scalar, constructs an inline function whose input arguments are x, P1, P2, ., PN.nExamples:n g = inline(t2)n g = inline(sin(2*pi*f + theta)n g = inline(si
4、n(2*pi*f + theta), f, theta)n g = inline(xP1, 1)n n See also SYMVAR.n例如:nf=inline(x.2-3) %建立一元函數f(x)=x2-3ng=inline(x.y-3, x, y) %建立二元函數f(x)=xy-3ng=inline(x.y-3, y, x) %建立二元函數f(x)=xy-3n注意g(x,y)與h(y,x)的區別,如g(2,3)=5, h(2,3)=6,為什么?n使用function創建M函數(實驗3將詳細介紹)n編寫程序建立一個M函數是MATLAB的一種常用方式。n例如在編輯窗口駛入如下程序:nfunc
5、tion y=f1(x) %聲明建立一個名為f1的函數;ny=x.2-3; %建立函數f(x)=x2-3,x可以為向量n用文件名f1(函數名)保存程序,生成f1.m文件即為建立的函數。nM-函數必須由function語句引導,具體格式為:nfunction 輸出變量列表輸出變量列表=函數名函數名(輸入變量列表輸入變量列表)n例例1-12 建立同時計算建立同時計算y1=(a+b)n, y2=(a-b)n的函的函數,即任給數,即任給a、b、n三個數,返回三個數,返回y1、y2。n在編輯窗口中輸入如下程序:在編輯窗口中輸入如下程序:n例例1-12 建立同時計算建立同時計算y1=(a+b)n, y2=
6、(a-b)n的的函數,即任給函數,即任給a、b、n三個數,返回三個數,返回y1、y2。n在編輯窗口中輸入如下程序:在編輯窗口中輸入如下程序:nfunction y1,y2=fun1(a,b,n)ny1=(a+b).n;ny2=(a-b).n;n輸入完成后用函數名輸入完成后用函數名fun1作為文件名存盤,形作為文件名存盤,形成一個函數文件:成一個函數文件:fun1.m,可以進行調用。,可以進行調用。n1.3.2 數值函數的運算數值函數的運算n當一個數值函數通過上述方法,由當一個數值函數通過上述方法,由inline或或function建立以后,就可以用于求解相關的各種問建立以后,就可以用于求解相關
7、的各種問題,如求函數值,函數的題,如求函數值,函數的零點零點、極值極值、積分積分等。等。n1. 求函數值求函數值n當自變量為給定的值或向量時,函數返回相應的函當自變量為給定的值或向量時,函數返回相應的函數值或函數值向量。數值或函數值向量。n例如:對于上一節建立的函數例如:對于上一節建立的函數f(x)、g(x,y)、h(y,x)、f1(x)和和fun1(a,b,n)有如下結果:有如下結果:n例如:對于上一節建立的函數例如:對于上一節建立的函數f(x)、g(x,y)、h(y,x)、f1(x)和和fun1(a,b,n)有如下結果:有如下結果:n f=inline(x.2-3) %建立一元函數建立一元
8、函數f(x)=x2-3nf =n Inline function:n f(x) = x.2-3n f(2)nans =1n g=inline(x.y-3, x, y) %建立二元函數f(x)=xy-3ng =n Inline function:n g(x,y) = x.y-3n g(2,3)nans =n 5n Y=f1(2)nY =n 1n f(1 2 3)nans =n -2 1 6n y1,y2=fun1(1,2,3)n n%此處不能寫為此處不能寫為y1,y2=fun1(1 2 3)ny1 =n 27ny2 =n -1n請用實驗驗證以上結果,并總結數值函數的定義與用請用實驗驗證以上結果,
9、并總結數值函數的定義與用法。法。n2. 數值函數的圖形數值函數的圖形nx=0:0.01:2; %生成自變量;生成自變量;ny=1./(x-0.3).2+0.01)+1./(x-0.9).2+0.04)-6; %生成函數生成函數y,注意點運算,注意點運算nplot(x,y,linewidth,2) %畫函數曲線畫函數曲線 ngrid %加坐標網格n另一方面,可以通過建立數值函數,運用MATLAB的fplot命令來實現,其格式:nfplot(f,a,b)n上述圖形也可以用下述命令來完成。n f=inline(1./(x-0.3).2+0.01)+1./(x- 0.9).2+0.04)-6) % 生
10、成數值函數生成數值函數f(x)nfplot(f,0,2) % 畫函數畫函數f在在0,2上的曲線上的曲線n3. 數值函數的零點數值函數的零點n當一個函數f(x)與x軸相交時,交點(又稱為零點)是方程f(x)=0的一個實根。如何求函數的零點,MATLAB提供了一個重要命令fzero。其使用方法有兩種:n(help fzero 出來很多!出來很多!)n求函數求函數f(x)在在x0附近的零點附近的零點c,格式:,格式:nc=fzero(f, x0 )n求函數f(x)在區間a,b附近的零點c,格式:nc=fzero(f, a,b)n這里要求函數在區間兩端點處的函數值要異號。n例如,對于例題1-13中所定
11、義的f(x),求其零點c。nf= inline(1./(x-0.3).2+0.01)+1./(x-0.9).2+0.04)-6) ;nc=fzero(f, 0,2) %求函數f在0,2上的零點c,要求f(0)f(2) fzero(f,1) %求函數f在x=1附近的零點nans =n 1.2995n4. 數值函數的最小(大)值n求一元函數或多元函數的最小(大)值是數學上經常遇到的問題,如何求解最小(大)值,MATLAB提供了相應的命令fminbnd(一元函數最小值)和fminsearch(多元函數最小值)。n求一元函數f(x)在區間a,b上的最小值點x及最小值y,格式為x,y=fminbnd(f
12、,a,b) n求多元函數f(X)在點X0附近的最小值點X及最小值y,格式為X,y=fminbnd(f,a,b)這里這里X、X0均為向量。均為向量。n對于例題對于例題1-13中所定義函數的中所定義函數的f(x),求其在區間,求其在區間0.2,0.8上的最小值。上的最小值。nfy= inline(1./(x-0.3).2+0.01)+1./(x-0.9).2+0.04)-6) ;nxmin,fmin=fminbnd(fy,0.2,0.8) %函數函數fy在在0.2,0.8上最小值點及最小值上最小值點及最小值nxmin = 0.6370,fmin =11.2528n如何求解函數fy在0.2,0.8上
13、的最大值點及最大值呢?n事實上,函數fy在0.2,0.8上的最大值就是-fy在0.2,0.8上的最小值。nff= inline(-1./(x-0.3).2+0.01)+1./(x-0.9).2+0.04)-6) ; %函數ff=-fynx, y=fminbnd(ff,0.2,0.8); %函數ff在0.2,0.8上最小值點及最小值nxmax=xnfmax=-ynxmax =n 0.2996nfmax =n103.5014n5. 數值函數的積分數值函數的積分n求一元函數定積分或多元函數重積分的近似值,求一元函數定積分或多元函數重積分的近似值,MATLAB提供了有關命令提供了有關命令quad(定積
14、分定積分)、dblquad(二重積分二重積分)和和triplequad(三重積分三重積分)。他們。他們的使用方法如下:的使用方法如下:nQuad(四方院子;四胞胎之一;嵌條;成套的四件四方院子;四胞胎之一;嵌條;成套的四件東西東西)n求一元函數求一元函數f(x)在區間在區間a,b上的定積分上的定積分(近似計算近似計算),格式為格式為n低階方法:低階方法:quad(f,a,b)n高階方法:高階方法:quadl(f,a,b)n求二元函數f(x,y)在長方形區域a,bc,d上的二重積分,格式為dblquad(f,a,b,c,d)n求三元函數f(x,y,z)在長方體區域a,bc,d e,f上的三重積分
15、,格式為triplequad(f,a,b,c,d,e,f)n例如,求例題1-13所定義f(x)在0,1上的定積分nf= inline(1./(x-0.3).2+0.01)+1./(x-0.9).2+0.04)-6) ;nI=quad(f,0,1) %求f(x)在0,1上的定積分nI =n 29.8583ng=inline(x*y,x,y); % 建立二元函數g(x,y)=xynI=dblquad(g,0,1,1,2) %求g(x,y)在0,11,2上的二重積分nI = 0.7500nh=inline(x.*exp(y)+z.2,x,y,z); % 建立三元函數;nI=triplequad(h,
16、0,1,0,1,0,1) n %求h(x,y,z)在0,10,1 0,1上的三重積分nI = 1.1925n另外,對于定積分,如果已知積分區間a,b的一個劃分向量X=x1,x2,xn,以及被積函數y在對應劃分點處的函數值向量Y=y1,y2,yn(函數表達式未必知道函數表達式未必知道),那么可以用梯形近似計算方法計算定積分,MATLAB提供了命令trapz。n格式為:trapz(X,Y)應用舉例n例1-15n當當s=5nf=inline(1/4*x4-5/3*x3+3*x2+5*x-5); %建立函數x=fzero(f,0,5) %求解方程f(x)=0在0,5上的根nx = 0.7762n同理可
17、求出s=10 時,nf=inline(1/4*x4-5/3*x3+3*x2+5*x-10); n%建立函數x=fzero(f,0,10) %求解方程f(x)=0在0,10上的根nx = 1.5179n例1-16 利用MATLAB命令求解無理數的近似值。n用函數零點命令fzero求無理數e的近似值;n用定積分計算命令(trapz、quad、quadl)求無理數ln2的近似值。n無理數e可以看成是方程lnx-1=0在x=2附近的實根,于是可以用fzero來求解。n f=inline(log(x)-1); %建立函數f(x)=lnx-1 nx0=fzero(f,2); %求解方程f(x)=0在x=2
18、附近的根nx0 = 2.7183ne=vpa(x0,10) %顯示顯示x0小數點后小數點后10位?位?ne =n 2.718281828n注:注:nx0=fzero(f,2); 可改為可改為x0=fzero(f,3); 結果不變結果不變n用梯形法(trapz)近似計算nX=0:0.01:1; %產生0,1區間上的劃分向量;nY=1./(1+X); %求對應的分點處的函數值向量na=trapz(X,Y); %求用梯形法求出積分近似值nln2=vpa(a,10) %顯示a小數點后10位nln2 =n .69315343051.4 MATLAB中的符號運算中的符號運算nMATLAB除了可以進行數值運
19、算外,還可以進行有關符號運算,如函數的求極限、求導、不定積分、Taylor展開與級數求和等符號運算。n在進行符號運算時,首先要定義符號變量,建立符號函數。n1.4.1 符號函數表示符號函數表示n建立符號函數通常有兩種方式:1. 首先用syms命令聲明符號變量,再建立符號函數表達式。格式如下:nsyms x y n n%聲明x y n均為符號變量;nz=x2+sin(x*yn) %建立符號函數z=x2+sin(xyn)2. 直接用sym命令定義符號函數,格式如下nf=sym(x2+cos(x*yn) n函數建立后就可以對函數求極限、導數、微分、積分等運算。n1.4.2 符號函數的求值n符號函數建
20、立之后,就確立了相應的函數符號表達式,它和數值函數不同,不能直接計算函數值。n如:nf=sym(0.5-x*y2)nf =n 0.5-x*y2n那么,要想計算當x=2,y=3時f的值,就需要使用MATLAB的符號函數與數值函數的轉換命令eval來計算,其格式如下:nx=2; y=3;na=eval(f) a =-17.5000n1.4.3 符號函數運算n在對已經建立的符號函數進行運算時,若符號函數中只有一個符號變量時,通常默認為函數的自變量,否則對于多個變量時,通常要指明相應的自變量,再對該變量進行運算。n極限運算(limit命令)n輸入命令為:nsyms x %聲明符號變量nfx=1/(1+exp(-1/x); %建立符號函數fxnlim
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025下半年電新行業供給回歸有序需求韌性較好靜待周期復蘇
- 直播電商主播在2025年的粉絲互動與營銷策略研究報告
- 老年教育課程設置改革與2025年體驗式教學方法應用分析報告
- 2025年農村一二三產業融合發展的農村電商與農業品牌建設報告
- 2025年文化旅游演藝項目季節性運營與市場策略報告
- 2025年成人教育終身學習平臺運營中的品牌建設與市場推廣報告
- 汽車輕量化材料在汽車底盤減重中的技術創新報告
- 汽車行業2025年供應鏈風險管理與企業風險管理策略優化方案報告
- 汽車共享平臺2025年運營模式轉型與用戶行為重構報告
- 2025年遠程醫療服務在分級診療中的遠程醫療技術與設備研發與創新報告
- 2025年高考英語課后續寫高頻考點話題分類第07講 讀后續寫之成長類主題(講義)
- 2025年廣東中考百校聯考語文試卷 2025年廣東中考百校聯考語文試卷
- 2025年公路市場調研報告
- 五年級(下)語文選擇題專項165道
- 生物+2025云南新高考自主命題沖刺金卷及答案
- 糖尿病眼病試題及答案
- 期末模擬卷(南京專用)(含解析)2024-2025學年譯林版英語七年級下冊
- 石油化工工程防滲技術規范
- 25年企業員工崗前安全培訓考試試題【模擬題】
- 高中語文跨學科閱讀教學研究-以《紅樓夢》為例
- 腕管綜合征診治循證臨床實踐指南(2024)解讀
評論
0/150
提交評論