函数极值的优化方法用 MATLAB 搞定,效率还挺高的。直接搜索法虽然简单,但在函数复杂的时候,就得靠点靠谱的优化算法,比如梯度下降法或者牛顿法。用 MATLAB 内置的 fminbnd
,你可以快搞出极小值在哪,不用自己敲太多数学推导。
目标函数也不复杂,像 f(x) = x^4 - 8x^3 + 16x^2 - 2x + 8
,直接跑几行代码就能搞定。要是函数更复杂,图像先画出来,极值位置心里就有数了,效率也上来了。
而且 MATLAB 自带的polyder、roots这些函数配合用,导数求解、根找极值点都蛮方便的。再结合 linspace
生成点集,用 min
挑极小值,响应也快。
不过直接搜索对大区间不太友好,效率下来了。推荐你用 fminbnd
,在闭区间里搜最小值,调用简单,效果也不错:
best_x = fminbnd(f, -5, 5);
best_value = f(best_x);
fprintf('Minimum value is %.4f at x = %.4f ', best_value, best_x);
如果你对优化算法感兴趣,可以看看粒子群算法、遗传算法这些智能优化方法,MATLAB 也支持得不错。有空可以翻翻下面这些资源,学习曲线不陡,挺实用的。