【matlab笔记】寻找极小值

主要用的是 fminbnd 和 fminsearch 这两个函数。

首先定义函数(要定义为【函数句柄】类型)

%% 定义函数
clear;clc;
f = @(x) - 1 ./ ((x - 0.3) .^ 2 + 0.01) - 1 ./ ((x - 0.9).^2 + 0.04) + 6

% 绘制图像
x = -1:0.01:2;
y = f(x);
plot(x, y)

 目测此函数的两个极小值分别在0.3和0.9附近

① fminbnd

%% fminbnd 函数的使用
% x = fminbnd(fun,x1,x2) 返回一个值 x,该值是 fun 中描述的标量值函数在区间 x1 < x < x2 中的局部最小值。

min1 = fminbnd(f, 0, 0.5);
min2 = fminbnd(f,0.5,1);      % 这里返回的是x轴坐标
disp(['fminbnd:    ',num2str(min1),' and ',num2str(min2)])

运行结果:

fminbnd:    0.30039 and 0.89273

② fminsearch

%% fminsearch 函数的使用
% x = fminsearch(fun,x0) 在点 x0 处开始并尝试求 fun 中描述的函数的局部最小值 x。

min1 = fminsearch(f, 0.3); 
min2 = fminsearch(f, 2);

disp(['fminsearch:    ',num2str(min1),' and ',num2str(min2)])

运行结果:

fminsearch:    0.30035 and 0.89268

(由于算法不同,两个函数返回结果略有差别)

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值