30 lines
830 B
Mathematica
30 lines
830 B
Mathematica
|
|
function p = compile_nonlinear_table(p)
|
||
|
|
linears = find(p.variabletype == 0);
|
||
|
|
nonlinears = find(p.variabletype > 0);
|
||
|
|
bilinears = [];
|
||
|
|
for i = 1:length(nonlinears)
|
||
|
|
if p.variabletype(nonlinears(i))<3
|
||
|
|
z = find(p.monomtable(nonlinears(i),:));
|
||
|
|
if length(z)==1
|
||
|
|
bilinears = [bilinears;nonlinears(i) z z];
|
||
|
|
else
|
||
|
|
bilinears = [bilinears;nonlinears(i) z(1) z(2)];
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|
||
|
|
nonlinears = union(nonlinears,p.evalVariables);
|
||
|
|
linears = setdiff(linears,p.evalVariables);
|
||
|
|
|
||
|
|
p.linears = linears;
|
||
|
|
p.bilinears = bilinears;
|
||
|
|
p.nonlinears = nonlinears;
|
||
|
|
|
||
|
|
Quadratics = find(p.variabletype==2);
|
||
|
|
QuadraticsList = zeros(length(p.c),2);
|
||
|
|
for i = Quadratics
|
||
|
|
vars = find(p.monomtable(i,:));
|
||
|
|
QuadraticsList(i,:) = vars(:)';
|
||
|
|
end
|
||
|
|
p.Quadratics = Quadratics;
|
||
|
|
p.QuadraticsList = QuadraticsList;
|