MATLAB學習與使用:求函數(shù)的極大值與極小值
在MATLAB中,優(yōu)化工具箱提供了各種方法來求解函數(shù)的極大值和極小值。其中,fminbnd函數(shù)可以用來求解一元函數(shù)f(x)的極小值,而-f(x)的極小值就是f(x)的極大值。下面以函數(shù)f(x)sin(
在MATLAB中,優(yōu)化工具箱提供了各種方法來求解函數(shù)的極大值和極小值。其中,fminbnd函數(shù)可以用來求解一元函數(shù)f(x)的極小值,而-f(x)的極小值就是f(x)的極大值。下面以函數(shù)f(x)sin(x)x*cos(x)為例,介紹如何使用MATLAB來求解函數(shù)的極大值和極小值。
第一步:確定求解區(qū)間
首先,我們需要確定函數(shù)的求解區(qū)間。假設我們要求解函數(shù)f(x)sin(x)x*cos(x)在區(qū)間[0, 5]上的極大值和極小值。
第二步:使用fminbnd函數(shù)求解
接下來,打開MATLAB并創(chuàng)建一個新的腳本文件。在腳本編輯區(qū)輸入以下代碼:
```matlab close all; clear all; clc; syms xf @(x) sin(x)*x*cos(x); [xmin] fminbnd(f,0,5), [fxmin] double(subs(f,x,xmin)) [xmax] fminbnd(inline(-f(x)),0,5), [fxmax] double(subs(f,x,xmax)) ezplot(f,[0,5]); hold on plot([xmin,xmax],subs(f,x,[xmin,xmax]),'ro','LineWidth',5) text(xmin,double(subs(f,x,xmin) 0.2),'極小值') text(xmax,double(subs(f,x,xmax) 0.2),'極大值') ```在上述代碼中,我們首先通過匿名函數(shù)的方式定義了函數(shù)f(x),然后使用fminbnd函數(shù)對其進行求解。其中,inline()用于定義內聯(lián)函數(shù),subs()用于求解函數(shù)在指定點的值。
第三步:保存和運行腳本
保存腳本并運行,在命令行窗口中會返回以下結果:
``` xmin 3.6436 fxmin -3.6752 xmax 1.0769 fxmax 1.3910 ```這意味著函數(shù)f(x)sin(x)x*cos(x)在區(qū)間[0, 5]上的極小值為-3.6752,極大值為1.3910,分別位于x3.6436和x1.0769處。
第四步:查看結果
除了結果以外,運行腳本還會生成圖像,顯示了函數(shù)f(x)sin(x)x*cos(x)在區(qū)間[0, 5]上的曲線以及極大值和極小值的位置。
第五步:進一步了解fminbnd函數(shù)
如果想了解更多關于fminbnd函數(shù)的信息,可以在MATLAB的命令行窗口中輸入doc fminbnd,查看MATLAB幫助文檔中對該函數(shù)的詳細介紹。