MATLAB程式設計入門篇一般數學函數的處理與分析

上传人:ra****d 文档编号:252316882 上传时间:2024-11-14 格式:PPT 页数:48 大小:180KB
返回 下载 相关 举报
MATLAB程式設計入門篇一般數學函數的處理與分析_第1页
第1页 / 共48页
MATLAB程式設計入門篇一般數學函數的處理與分析_第2页
第2页 / 共48页
MATLAB程式設計入門篇一般數學函數的處理與分析_第3页
第3页 / 共48页
点击查看更多>>
资源描述
,按一下以編輯母片標題樣式,按一下以編輯母片,第二層,第三層,第四層,第五層1,*,MATLAB,程式設計進階篇:一般數學函數的處理與分析,按一下以編輯母片標題樣式,按一下以編輯母片,第二層,第三層,第四層,第五層1,*,MATLAB,程式設計進階篇一般數學函數的處理與分析,張智星,:/mirlab.org/jang,台大資工系 多媒體檢索實驗室,函數表示法,MATLAB,可對數學函數進行各種運算與分析,例如:,作圖,求根,優化:求函數的極大或極小值,數值積分,求解微分方程式,如何表示此種被分析的函數?,字串,函數握把Function handles,假设此函數不使用檔案來表示,則可使用匿名函數,一維數學函數的,範例,MATLAB 是以 M 檔案副檔名為 m來表示一個函數,例如,內建於MATLAB目錄的 humps.m 可用來計算以下函數:,更多資訊:,欲顯示此檔案的位置 which humps,欲顯示此檔案的內容 type humps,欲顯示此檔案位置,可輸入,which humps,C:Program FilesMATLAB71toolboxmatlabdemoshumps.m,提示,MATLAB 常被用到的測試函數,humps:單輸入函數,peaks:雙輸入函數,函式和函數都代表functions,兩者常會混用,假设要正名,可區分如下:,函數:通常用來表示mathematic functions,函式:通常用來表示subroutines or functions in a programming language,數學函數的作圖,使用函式握把Function Handle來表示,例如:使用 humps 來代表 humps.m 函式,這是比較新的方式,適用於 MATLAB 6.x&7.x,,用 fplot 指令進行數學函數作圖,畫出 humps 函數在 0,2 間的曲線,範例8-1:fplot01.m,subplot(2,1,1);,fplot(humps,0,2);%,使用字串指定函式,subplot(2,1,2);,fplot(humps,0 2);%,使用函式握把來指定函式,同時改變 x、y 的區間,我們可同時改變,x,和,y,的區間,範例,8-2,:,fplot02.m,x,的區間為,0,1,y,的區間為,5,25,fplot(humps,0,1,5,25);,grid on%,畫出格線,匿名函式,fplot 也接受匿名函式當場指定的函式,範例8-3:fplot021.m,subplot(2,1,1);,fplot(sin(2*x)+cos(x),-10,10)%,使用字串指定函式,subplot(2,1,2);,fplot(x)sin(2*x)+cos(x),-10,10)%,使用函式握把來指定函式,對多個函數作圖,fplot 也可同時對多個函數作圖,其中每個函數須以一個行向量來表示,範例8-4:fplot022.m,x 是行向量MATLAB 預設值,sin(x),exp(-x)是二個行向量,每個行向量代表一個函數即一條曲線,fplot(x)sin(x),exp(-x),0,10),帶有參數的函數,匿名函式也可以帶有參數,範例8-4:fplot023.m,此時“(x)不可省略,以便指定自變數,a=1;b=1.1;c=1.2;,fplot(x)sin(a*x),sin(b*x),sin(c*x),0,10),產生,X,、,Y,座標點,fplot,可進行描點作圖,類似,plot(x,y),,但,x,座標點的密度根據函數值的變化決定,我們顯示,fplot,所產生的,x,座標點,範例,8-5,:,fplot03.m,函數變化平緩處,產生,稀疏的點,函數變化劇烈處,產生,緊密的點,x,y=fplot(humps,-1,2);,plot(x,y,-o);,產生更密的,X,座標點,(1),假设欲產生更密的 x 座標點,可在 fplot 指令参加另一個輸入引數,已指定相對容忍度(Tolerance),範例8-6:fplot04.m,subplot(2,1,1);,fplot(x)sin(1./x),0.01,0.1);,subplot(2,1,2);,fplot(x)sin(1./x),0.01,0.1,0.0001);,產生更密的,X,座標點,(2),在第一圖中,,fplot,指令使用預設相對容忍度,其值為,0.002,。,在第二圖中,相對容忍度被設為,0.0001,,可得到更準確的圖形,但也要花更多計算及作圖時間。,ezplot,指令,ezplot,指令和,fplot,指令類似,可進行描點作圖,但使用更為簡便,預設的作圖範圍為,範例,8-7,:,ezplot01.m,ezplot(x)x3-x2+x);,平面中的參數式曲線,ezplot,也可畫出平面中的參數式曲線,範例,8-8,:,ezplot02.m,參數式函數的參數預設範圍仍是,ezplot(t)sin(3*t),(t)cos(5*t);,利薩如圖形,(Lissajous Figures),空間中的參數式曲線,ezplot3,可畫出空間中的參數式曲線,範例,8-8,:,ezplot021.m,參數式函數的參數預設範圍仍是,ezplot3(t)sin(t),(t)cos(3*t),(t)cos(5*t),3D,利薩如圖形,隱函數作圖,ezplot 指令可用於隱函數作圖,以下範例可以畫出,範例8-9:ezplot03.m,ezplot(x,y)x3+2*x2-3*x-y2+15);,函數的求根,fzero 指令,用於單變數函數的求根,語法,x=fzero(fun,x0),fun 是欲求根的函數以字串或函數握把來表示,x0 是一個起始點或起始區間,X0,對,fzero,的影響,fzero 指令根據 x0 不同而執行以下動作,假设 x0 為一個起始點,fzero 會自動找出附近包含零點即根,或函數變號點的區間,逐步縮小此區間以找出零點,假设 fzero 無法找出此區間,傳回 NaN,假设使函數值不同號的兩點,由 x0 直接指定尋根的區間,fzero 更快速找到位於此區間內的根,求根範例,(1),找出humps在 x=1.5 附近的根,並驗算,範例8-10:fzero01.m,fzero 先找到在 1.5 附近變號的兩點即 1.26 及 1.6697,然後再找出 humps 的零點,x=fzero(humps,1.5);%,求靠近,1.5,附近的根,y=humps(x);,%,帶入求值,fprintf(humps(%f)=%fn,x,y);,humps(1.299550)=0.000000,求根範例,(2),假设 humps 在 x=-1 及 1 間為異號,令 x0=-1,1 為起始區間來找出 humps 的零點,範例8-11:fzero02.m,此時 fzero 找到的是另一個零點,x=fzero(humps,-1,1);%,求落於區間,-1,1,的根,y=humps(x);%,帶入求值,fprintf(humps(%f)=%fn,x,y);,humps(-0.131618)=0.000000,求根範例,(3),假设要畫出以上兩個零點,請見以下範例,範例8-12:fzero03.m,fplot(humps,-1,2);grid on,z1=fzero(humps,1.5);,z2=fzero(humps,-1,1);,line(z1,humps(z1),marker,o,color,r);,line(z2,humps(z2),marker,o,color,r);,顯示求解過程的中間結果,(1),MATLAB 可以顯示求解過程的中間結果,使用 optimset 指令來設定顯示選項,再將 optimset 傳回結構變數送入 fzero,範例8-13:fzero04.m,optimset 常用於設定最正确化的選項,下一節會有比較完整的介紹,opt=optimset(disp,iter);%,顯示每個,iteration,的結果,a=fzero(humps,-1,1,opt),顯示求解過程的中間結果,(2),求零點過程中,找下一點的兩個方法顯示在第四個欄位Procedure 欄位,二分法(Bisection),內插法(Interpolation),可由doc fzero找到所使用的演算法,Func-count x f(x)Procedure,1 -1 -5.13779 initial,2 1 16 I initial,3 -0.513876 -4.02235 interpolation,4 0.243062 71.6382 bisection,5 -0.473635 -3.83767 interpolation,6 -0.115287 0.414441 bisection,7 -0.150214 -0.423446 interpolation,8 -0.132562 -0.0226907 interpolation,9 -0.131666 -0.0011492 interpolation,10 -0.131618 1.88371e-007 interpolation,11 -0.131618 -2.7935e-011 interpolation,12 -0.131618 8.88178e-016 interpolation,13 -0.131618-9.76996e-015 interpolation,Zero found in the interval:-1,1.,a=-0.1316,函數的優化,MATLAB 提供了數個根本指令來進行數學函數的優化,本節將介紹:,單變數函數的最小化,多變數函數的最小化,設定最正确化的選項,假设讀者有興趣使用較複雜的方法,可以使用最正确化工具箱Optimization Toolbox,單變函數的最小化,fminbnd,指令,尋求,humps,在,0.3,1,中的最小值,範例,8-14,:,fminbnd01.m,最小值發生在,x=0.637,,且最小值為,11.2528,x,minValue=fminbnd(humps,0.3,1),x=,0.6370,minValue=,11.2528,尋求最小值的中間過程,(1),尋求最小值的中間過程,使用,optimset,指令來設定顯示選項,再將,optimset,傳回結構變數送入,fminbnd,範例,8-15,:,fminbnd02.m,opt=optimset(disp,iter);%,顯示每個步驟的結果,x,minValue=fminbnd(humps,0.3,1,opt),尋求最小值的中間過程,(2),左表列出,x,值的變化及相對的函數值,f(x),最後一欄位列出求極小值的方法,包含,黃金分割搜尋,(Golden Section Search),拋物線內插法,(Parabolic Interpolation),x,值誤差小於,10-4,Func-count x f(x)Procedure,1 0.567376 12.9098 initial,2 0.732624 13.7746 golden,3 0.465248 25.1714 golden,4 0.644416 11.2693 parabolic,5 0.6413 11.2583 parabolic,6 0.637618 11.2529 parabolic,7 0.636985 11.2528 parabolic,8 0.637019 11.2528 parabolic,9 0.637052 11.2528 parabolic,Optimization terminated successfully:,the current x satisfies the termination criteria using OPTIONS.TolX of 1.000000e-004,x=0.6370,minValue=11.2528,放鬆誤差管
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业管理 > 商业计划


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!