MATLAB學(xué)習(xí)與使用:求函數(shù)的極大值與極小值
在MATLAB中,優(yōu)化工具箱提供了各種方法來(lái)求解函數(shù)的極大值和極小值。其中,fminbnd函數(shù)可以用來(lái)求解一元函數(shù)f(x)的極小值,而-f(x)的極小值就是f(x)的極大值。下面以函數(shù)f(x)sin(
在MATLAB中,優(yōu)化工具箱提供了各種方法來(lái)求解函數(shù)的極大值和極小值。其中,fminbnd函數(shù)可以用來(lái)求解一元函數(shù)f(x)的極小值,而-f(x)的極小值就是f(x)的極大值。下面以函數(shù)f(x)sin(x)x*cos(x)為例,介紹如何使用MATLAB來(lái)求解函數(shù)的極大值和極小值。
第一步:確定求解區(qū)間
首先,我們需要確定函數(shù)的求解區(qū)間。假設(shè)我們要求解函數(shù)f(x)sin(x)x*cos(x)在區(qū)間[0, 5]上的極大值和極小值。
第二步:使用fminbnd函數(shù)求解
接下來(lái),打開(kāi)MATLAB并創(chuàng)建一個(gè)新的腳本文件。在腳本編輯區(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),'極大值') ```在上述代碼中,我們首先通過(guò)匿名函數(shù)的方式定義了函數(shù)f(x),然后使用fminbnd函數(shù)對(duì)其進(jìn)行求解。其中,inline()用于定義內(nèi)聯(lián)函數(shù),subs()用于求解函數(shù)在指定點(diǎn)的值。
第三步:保存和運(yùn)行腳本
保存腳本并運(yùn)行,在命令行窗口中會(huì)返回以下結(jié)果:
``` 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處。
第四步:查看結(jié)果
除了結(jié)果以外,運(yùn)行腳本還會(huì)生成圖像,顯示了函數(shù)f(x)sin(x)x*cos(x)在區(qū)間[0, 5]上的曲線(xiàn)以及極大值和極小值的位置。
第五步:進(jìn)一步了解fminbnd函數(shù)
如果想了解更多關(guān)于fminbnd函數(shù)的信息,可以在MATLAB的命令行窗口中輸入doc fminbnd,查看MATLAB幫助文檔中對(duì)該函數(shù)的詳細(xì)介紹。