【发布时间】:2019-11-29 04:51:21
【问题描述】:
我想在matlab中求解这个非线性程序
min J=X' EX + U' EU
subject to X'-X0'-G'Z-X'DP+X'DZ-U'P=0
其中 X 和 U 未知 2*r+1 by 1 矩阵,而其他矩阵已知矩阵。
如何使用fmincon() 找到矩阵 X 和 U?
更新
已知矩阵:
X0, G, Z, D, P
r=2;
% X0
X0(1)=1;
for i=2:2*r+1
X0(i)=0;
end
X0=X0';
% P
P1=[1/2];
P2=zeros(1,r);
for i=1:r
P3(i)=(-1)/(i*pi);
end
P4=zeros(r,1);
P5=zeros(r,r);
for i=1:r
V1(i)=1/(2*i*pi);
end
P6=diag(V1);
for i=1:r
W(i)=1/(2*i*pi);
end
P7=W';
for i=1:r
V2(i)=(-1)/(2*i*pi);
end
P8=diag(V2);
P9=zeros(r,r);
P=[P1 P2 P3 ; P4 P5 P6 ; P7 P8 P9];
% D
D1=[1];
D2=zeros(1,r);
D3=zeros(1,r);
D4=zeros(r,1);
for i=1:r
V4(i)=cos((2*i*pi)/2);
end
D5=diag(V4);
for i=1:r
V5(i)=sin((2*i*pi)/2);
end
D6=diag(V5);
D7=zeros(r,1);
for i=1:r
V6(i)=-sin((2*i*pi)/2);
end
D8=diag(V6);
for i=1:r
V7(i)=cos((2*i*pi)/2);
end
D9=diag(V7);
D=[D1 D2 D3 ; D4 D5 D6 ; D7 D8 D9];
% G
G(1)=1;
for i=2:2*r+1
G(i)=0;
end
G=G';
% Z
Z1=[1];
Z2=zeros(1,2*r);
for i=1:r
Z3(i)=(1/(i*pi))*sin(i*pi);
end
Z3=Z3';
Z4=zeros(r,2*r);
for i=1:r
Z5(i)=(1/(i*pi))*(1-cos(i*pi));
end
Z5=Z5';
Z6=zeros(r,2*r);
Z=[Z1 Z2 ; Z3 Z4 ;Z5 Z6];
V3(1)=2;
for i=2:2*r+1
V3(i)=1;
end
% E
E=diag(V3);
提前致谢。
【问题讨论】:
-
@Adam 我可以问你一个关于我的另一个非线性问题的问题,它类似于上述问题吗?这只是约束函数中的一个变量。
-
你可以发个新帖子我去看看。因此,请确保社区也可以从您的问题和我的回答中学习,而不仅仅是供个人使用。
-
@Adam 是的,当然。谢谢。
标签: matlab nonlinear-optimization