matlab最速下降法代码
时间: 2023-07-02 18:07:55 浏览: 75
下面是使用 MATLAB 实现最速下降法的示例代码:
```matlab
% 定义目标函数和梯度
f = @(x) x(1)^2 + 4*x(2)^2;
grad_f = @(x) [2*x(1); 8*x(2)];
% 初始化参数
x0 = [1; 1];
tol = 1e-6;
max_iter = 100;
% 最速下降法
x = x0;
for i = 1:max_iter
grad = grad_f(x);
d = -grad;
alpha = 1;
while f(x + alpha*d) > f(x) + 0.5*alpha*grad'*d
alpha = alpha/2;
end
x = x + alpha*d;
if norm(grad) < tol
break
end
end
% 输出结果
fprintf('最优解:[%f, %f]\n', x(1), x(2));
fprintf('最优值:%f\n', f(x));
```
该示例代码中,首先定义了目标函数 $f(x_1,x_2)=x_1^2+4x_2^2$ 和其梯度 $\nabla f(x_1,x_2)=[2x_1,8x_2]^T$。然后定义了初始点 $x_0=[1,1]^T$,容许误差 $\text{tol}=10^{-6}$ 和最大迭代次数 $\text{max\_iter}=100$。接下来,使用最速下降法进行优化,直到满足容许误差或达到最大迭代次数为止。最后输出最优解和最优值。
请注意,该示例代码仅限于二维情况,如果需要处理更高维的问题,需要对代码进行相应的修改。
阅读全文