📄 recdef.m
字号:
function [w,F,DefinedMonoms] = recdef(pow,F,DefinedMonoms,setinitials);
% Author Johan L鰂berg
% $Id: recdef.m,v 1.3 2005/04/29 08:05:01 joloef Exp $
% Recursively define monomial x(pow(1))*x(pow(2))*x(pow(3))..
% using a set of linear variables and bilinear constraints
switch length(pow)
case 1
% Just a linear variable, no constraints needed
w = recover(pow);
case 2
% Quadratic
w = sdpvar(1,1);
if setinitials
assign(w,double(prod(recover(pow))));
end
F = F + set(prod(recover(pow)) == w);
otherwise
i = 1;
found = 0;
while ~found & i <= length(DefinedMonoms)
if isequal(pow,DefinedMonoms(i).power)
w = recover(DefinedMonoms(i).variable);
return
end
i = i + 1;
end
pow1 = pow(1:floor(length(pow)/2));
pow2 = pow(1+floor(length(pow)/2):end);
[w1,F,DefinedMonoms] = recdef(pow1,F,DefinedMonoms,setinitials);
[w2,F,DefinedMonoms] = recdef(pow2,F,DefinedMonoms,setinitials);
w = sdpvar(1,1);
F = F + set(w1*w2 == w);
if setinitials
assign(w,double(w1*w2));
end
DefinedMonoms(end+1).power = pow;
DefinedMonoms(end).variable = getvariables(w);
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -