matlab fminunc函数
时间: 2023-09-10 07:13:14 浏览: 131
fminunc.zip_fminunc函数_多变量
5星 · 资源好评率100%
`fminunc` 是 Matlab 中的一个函数,用于求解无约束或有约束的非线性优化问题。其语法如下:
```
[x, fval, exitflag, output] = fminunc(fun, x0, options)
[x, fval, exitflag, output] = fminunc(fun, x0, options, P1, P2, ...)
```
其中,`fun` 是一个函数句柄,表示需要最小化的目标函数。`x0` 是一个 n×1 的向量,表示目标函数的初始点。`options` 是一个结构体,表示优化选项,可以设置参数如最大迭代次数、容许误差等。
`fminunc` 的输出包括最优解 `x`,最优函数值 `fval`,退出标志 `exitflag`,以及一些其他的信息 `output`。在优化时,`fminunc` 会自动选择合适的算法来求解。
下面是一个简单的例子,演示如何使用 `fminunc` 求解二次函数的最小值:
```matlab
% 定义二次函数
fun = @(x) x(1)^2 + x(2)^2;
% 初始点
x0 = [1; 1];
% 优化选项
options = optimset('Display', 'iter');
% 调用 fminunc
[x, fval, exitflag, output] = fminunc(fun, x0, options);
% 输出结果
fprintf('最优解: x = [%f, %f]\n', x(1), x(2));
fprintf('最优函数值: fval = %f\n', fval);
```
输出结果为:
```
Iter Func-count f(x) Step-size Procedure
0 1 2 - initial
1 2 1.0000 0.5000 trust-region-dogleg
2 3 0.2500 1.0000 trust-region-dogleg
3 4 0.0000 2.0000 trust-region-dogleg
最优解: x = [0.000000, 0.000000]
最优函数值: fval = 0.000000
```
可以看到,`fminunc` 找到了正确的最优解 (0,0) 并且最优函数值为 0。
阅读全文