和函数的Argmin - 最小搜索的优化

时间:2016-02-10 15:31:47

标签: matlab optimization

我正在尝试在Matlab中编写以下优化问题:

  

g =argminΣ k = 1,2,3 ((v k - c 1 ) - g·(D k - c 2 ))²

     

c 1 且c 2 是常量。 v k 和D k 是向量。 g必须是积极的。

我已经意识到MATLAB有一个内置函数fminsearch应该能够执行任务,但是我不知道如何在函数中包含所有foreach的总和。 / p>

1 个答案:

答案 0 :(得分:3)

为什么要费心去寻找?最小化函数是未知g中二阶的简单多项式函数,当其导数为零时得到极值,即

Σk= 1,2,3 [-2 *((vk - c1) - g *(Dk - c2))*(Dk - c2)] = 0

产生:

gm =Σk= 1,2,3 [(vk - c1)*(Dk - c2)] /Σk= 1,2,3(Dk - c2)^ 2

如果gm为负数,则选择第一个可用的非负值,即零:

g = max(0,gm)

Bam!救援的基本数学!...: - )

MATLAB代码为:

%// some test data
v  = [1,2,3];
D  = [4,5,6];
c1 = 0.3;
c2 = 0.7;

%// minimizer
g = max(0, sum((v(:)-c1).*(D(:)-c2)) / sum((D(:)-c2).^2));