首先,我們來考慮一下部分分。
直接算即可,v1
=ek1
×s1−
−−−−
√+v′
1t=s
1v1
v1=e
1k1×
s1−−
−−−√
+v′1
v2=e
−e1k
2×s2
−−−−
−√+v
′2t=
s1v1
+s2v
2 我們猜測
t 關於e1
的函式是乙個單谷函式,對e1
三分一下就可以了
我不會qaq
首先,我們將題目要求轉化為數學式子 e≥
∑i=1
nkis
i(vi
−v′i
)2t=
∑i=1
nsiv
i 求t
min
基於貪心的思想,顯然e=
∑ni=
1kis
i(vi
−v′i
)2時,答案最優。
具體證明我不會。。。。
例題
在g(我們先來講一下結論。x1,x
2,x3
,…,x
n)=c
的約束條件下,求f(
x1,x
2,x3
,…,x
n)的最值。
結論
當f(我們將例題具體化,比如f(x1,x
2,x3
,…,x
n)取到最值時,f(
x1,x
2,x3
,…,x
n)和g(
x1,x
2,x3
,…,x
n)=c
的法向量(也就是梯度向量)平行。
x,y)
=x2+
y2g(
x,y)
=xy=
3 ,求f(
x,y)
min
先來肉眼觀察,很容易發現f(
x,y)
min=
6 然後我們用拉格朗日乘數法試試。 設∇
f(x,
y)=λ
∇g(x
,y)
我們就可以列出方程⎧⎩
⎨2x2
yxy=
λy=λ
x=3
解得λ=±
2 所以inline
double cal(int i,double vi,double lambda)
double divide_conqure(int i,double l,double r,double lambda)
return l;
}double check(double lambda)
return en;
}double divide_conqure(double l,double r)
return l;
}// f(v1, v2, v3, ..., vn) = ∑ si / vi
// g(v1, v2, v3, ..., vn) = ∑ kisi(vi-vi')^2
// (si'vi-sivi')/vi^2=-si/vi^2=2*lambda*kisi(vi-vi')
//vi^2*2*lambda*ki(vi-vi')和vi成反比&&=-1
//vi^3*2*lambda*ki-vi^2*lambda*vi'*2*ki=-1/lambda vi和lambda成正比
int main()
拉格朗日乘數法
在求取有約束條件的優化問題時,拉格朗日乘子法 lagrange multiplier 和kkt條件是非常重要的兩個求取方法,對於等式約束的優化問題,可以應用拉格朗日乘子法去求取最優值 如果含有不等式約束,可以應用kkt條件去求取。當然,這兩個方法求得的結果只是必要條件,只有當是凸函式的情況下,才能保...
拉格朗日乘數法
在求取有約束條件的優化問題時,拉格朗日乘子法 lagrange multiplier 和kkt條件是非常重要的兩個求取方法,對於等式約束的優化問題,可以應用拉格朗日乘子法去求取最優值 如果含有不等式約束,可以應用kkt條件去求取。當然,這兩個方法求得的結果只是必要條件,只有當是凸函式的情況下,才能保...
拉格朗日乘數法
在求取有約束條件的優化問題時,拉格朗日乘子法 lagrange multiplier 和kkt條件是非常重要的兩個求取方法,對於等式約束的優化問題,可以應用拉格朗日乘子法去求取最優值 如果含有不等式約束,可以應用kkt條件去求取。當然,這兩個方法求得的結果只是必要條件,只有當是凸函式的情況下,才能保...