用坐标下降法解min(x1-2)^2+(x1-2*x2)^2,起始点为(0,3),并求其matlab代码
时间: 2024-03-06 15:50:08 浏览: 14
目标函数为 $f(x_1, x_2) = (x_1-2)^2 + (x_1-2x_2)^2$,采用坐标下降法进行优化。起始点为 $(0,3)$。
根据坐标下降法的思路,我们先固定 $x_2$,对 $x_1$ 进行优化,然后再固定 $x_1$,对 $x_2$ 进行优化。具体实现如下:
```matlab
function [x, fval] = coordinateDescent()
% 目标函数
f = @(x) (x(1)-2)^2 + (x(1)-2*x(2))^2;
% 初始点
x0 = [0, 3];
% 迭代参数
maxIter = 1000;
tol = 1e-6;
% 坐标下降法
x = x0;
fval = f(x);
iter = 0;
while iter < maxIter
% 先固定 x2,对 x1 进行优化
x_old = x;
x(1) = 2 - x(2);
fval_old = fval;
fval = f(x);
if abs(fval - fval_old) < tol
break;
end
% 再固定 x1,对 x2 进行优化
x_old = x;
x(2) = (x(1)-2)/2;
fval_old = fval;
fval = f(x);
if abs(fval - fval_old) < tol
break;
end
iter = iter + 1;
end
end
```
在每次迭代中,我们先固定 $x_2$,优化得到 $x_1$ 的最优解;然后再固定 $x_1$,优化得到 $x_2$ 的最优解。重复上述过程直到满足收敛条件为止。
在本例中,我们可以手推得到最优解为 $(2,1)$,对应的函数值为 $f(2,1)=0$,与理论结果相符。