V = B X ^ − l X ^ = ( B T P B ) − 1 ( B T P l ) V=B\hat{X}-l\\ \hat{X}=(B^TPB)^{-1}(B^TPl) V=BX^−lX^=(BTPB)−1(BTPl)
{ 0.03 x 1 + 0.28 x 2 = 0.85 0.68 x 1 + 0.70 x 2 = 0.17 0.62 x 1 + 0.62 x 2 = 0.07 0.63 x 1 + 0.61 x 2 = 0.84 \begin{cases} 0.03 x_1 + 0.28 x_2 = 0.85 \\ 0.68 x_1 + 0.70 x_2 = 0.17 \\ 0.62 x_1 + 0.62 x_2 = 0.07 \\ 0.63 x_1 + 0.61 x_2 = 0.84 \\ \end{cases} ⎩⎪⎪⎪⎨⎪⎪⎪⎧0.03x1+0.28x2=0.850.68x1+0.70x2=0.170.62x1+0.62x2=0.070.63x1+0.61x2=0.84
C = [0.03 0.28
0.68 0.70
0.62 0.62
0.63 0.61];
d = [0.85
0.17
0.07
0.84];
[x,~,~,exitflag,~,~] = lsqnonneg(C,d)
{ 0.03 x 1 + 0.28 x 2 = 0.85 0.68 x 1 + 0.70 x 2 = 0.17 0.62 x 1 + 0.62 x 2 = 0.07 0.63 x 1 + 0.61 x 2 = 0.84 \begin{cases} 0.03 x_1 + 0.28 x_2 = 0.85 \\ 0.68 x_1 + 0.70 x_2 = 0.17 \\ 0.62 x_1 + 0.62 x_2 = 0.07 \\ 0.63 x_1 + 0.61 x_2 = 0.84 \\ \end{cases} ⎩⎪⎪⎪⎨⎪⎪⎪⎧0.03x1+0.28x2=0.850.68x1+0.70x2=0.170.62x1+0.62x2=0.070.63x1+0.61x2=0.84
s . t . { 3 x 1 + 2 x 2 ≤ 1 2 x 1 + 3 x 2 ≤ 2 x 1 , x 2 ≤ 2 s.t. \begin{cases} 3x_1+2x_2\le1\\ 2x_1+3x_2\le2\\ x_1,x_2\le2 \end{cases} s.t.⎩⎪⎨⎪⎧3x1+2x2≤12x1+3x2≤2x1,x2≤2
C = [0.03 0.28
0.68 0.70
0.62 0.62
0.63 0.61];
d = [0.85
0.17
0.07
0.84];
A = [3,2
2,3];
b = [1;2];
lb = [-Inf,-Inf];
rb = [2,2];
[x,~,~,exitflag,~,~] = lsqlin(C,d,A,b,[],[],lb,rb);
注:
lsqnonlin
和lsqcurvefit
使用相同的算法,两者等价!
Y = ∑ i = 0 4 a i s i n ( 2 π X 24 ) + b i c o s ( 2 π X 24 ) Y=\sum_{i=0}^4a_isin(\frac{2\pi X}{24})+b_icos(\frac{2\pi X}{24}) Y=i=0∑4aisin(242πX)+bicos(242πX)
X=rand(100,1);
Y=rand(100,1);
fun=@(a,X)(a(1)*cos(2*pi*X/24)+a(2)*sin(2*pi*X/24)+...
a(3)*cos(4*pi*X/24)+a(4)*sin(4*pi*X/24)+...
a(5)*cos(6*pi*X/24)+a(6)*sin(6*pi*X/24)+...
a(7)*cos(8*pi*X/24)+a(8)*sin(8*pi*X/24))+a(9);
a0=ones(1,9);% 初值
[a,~,~,exitflag,~,~]=lsqcurvefit(fun,a0,X,Y);
t=0:0.2:24;
TEC=fun(a,t);