Skip to content

Commit

Permalink
Added 5 functions (adapted for 2D and 3D ploting).
Browse files Browse the repository at this point in the history
  • Loading branch information
Miki96 committed Aug 3, 2019
1 parent e73d35a commit 5378061
Show file tree
Hide file tree
Showing 7 changed files with 184 additions and 0 deletions.
37 changes: 37 additions & 0 deletions Functions/MultiDimensional/ARWHEAD.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
function [ outVal, outGr, outHes ] = ARWHEAD( x, VGH )
% ARWHEAD (CUTE) function

n = length(x);
outVal = 0;
outGr = zeros(n, 1);
c = 0.5;

if VGH(1) > 0
for i = 1:n-1
outVal = outVal + -4*x(i)+3 + (x(i)^2 + x(n)^2)^2;
end
end

if VGH(2) > 0
inner = 0;
for i = 1:n-1
outGr(i) = 4*(x(i)^3 + x(i)*x(n)^2 - 1);
inner = inner + x(i)^2;
end
outGr(n) = 4*x(n)*(inner + 2*x(n)^2);
end

if VGH(3) > 0
outHes = zeros(n, n);
inner = 0;
for i = 1:n-1
outHes(i, i) = 4 * (3*x(i)^2 + x(n)^2);
outHes(n, i) = 8 * x(i) * x(n);
outHes(i, n) = 8 * x(i) * x(n);
inner = inner + x(i)^2;
end
outHes(n, n) = 4 * (inner + 6*x(n)^2);
else outHes = 0;
end

end
37 changes: 37 additions & 0 deletions Functions/MultiDimensional/EDENSCH.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
function [ outVal, outGr, outHes ] = EDENSCH( x, VGH )
% EDENSCH (CUTE) function

n = length(x);
outVal = 0;
outGr = zeros(n, 1);

if VGH(1) > 0
outVal = 16;
for i = 1:n-1
outVal = outVal + (x(i)-2)^4 + (x(i)*x(i+1)-2*x(i+1))^2 + (x(i+1)+1)^2;
end
end

if VGH(2) > 0
outGr(1) = 2*(x(1)-2)*(2*x(1)^2 - 8*x(1) + x(2)^2 + 8);
outGr(n) = 2*(x(n-1)^2 - 4*x(n-1) + 5)*x(n) + 2;
for i = 2:n-1
outGr(i) = 2*( ((x(i-1)-2)^2)*x(i) + (x(i)-2)*x(i+1)^2 + 2*(x(i)-2)^3 + x(i) + 1);
end
end

if VGH(3) > 0
outHes = zeros(n, n);
outHes(1, 1) = 2* (6*x(1)^2 - 24*x(1) + x(2)^2 + 24);
outHes(1, 2) = 4*(x(1)-2)*x(2);
outHes(n, n-1) = 4*(x(n-1)-2)*x(n);
outHes(n, n) = 2* (x(n-1)^2 - 4*x(n-1) + 5);
for i = 2:n-1
outHes(i, i-1) = 4*(x(i-1)-2)*x(i);
outHes(i, i) = 2*( (x(i-1)-2)^2 + 6*(x(i)-2)^2 + x(i+1)^2 + 1);
outHes(i, i+1) = 4*(x(i)-2)*x(i+1);
end
else outHes = 0;
end

end
36 changes: 36 additions & 0 deletions Functions/MultiDimensional/ENGVAL1.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
function [ outVal, outGr, outHes ] = ENGVAL1( x, VGH )
% ENGVAL1 (CUTE) function

n = length(x);
outVal = 0;
outGr = zeros(n, 1);

if VGH(1) > 0
for i = 1:n-1
outVal = outVal + (x(i)^2 + x(i+1)^2)^2 + (-4*x(i) + 3);
end
end

if VGH(2) > 0
outGr(1) = 4 * (x(1)^3 + x(1)*x(2)^2 - 1);
outGr(n) = 4*x(n) * (x(n-1)^2 + x(n)^2);
for i = 2:n-1
outGr(i) = 4 * (x(i)*x(i-1)^2 + 2*x(i)^3 + x(i)*x(i+1)^2 - 1);
end
end

if VGH(3) > 0
outHes = zeros(n, n);
outHes(1, 1) = 4 * (3*x(1)^2 + x(2)^2);
outHes(1, 2) = 8 * x(1) * x(2);
outHes(n, n-1) = 8 * x(n-1) * x(n);
outHes(n, n) = 4 * (3*x(n)^2 + x(n-1)^2);
for i = 2:n-1
outHes(i, i-1) = 8*x(i-1)*x(i);
outHes(i, i) = 4*(x(i-1)^2 + 6*x(i)^2 + x(i+1)^2);
outHes(i, i+1) = 8*x(i)*x(i+1);
end
else outHes = 0;
end

end
35 changes: 35 additions & 0 deletions Functions/MultiDimensional/LIARWHD.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
function [ outVal, outGr, outHes ] = LIARWHD( x, VGH )
% LIARWHD (CUTE) function

n = length(x);
outVal = 0;
outGr = zeros(n, 1);

if VGH(1) > 0
for i = 1:n
outVal = outVal + 4*(-x(1)+x(i)^2)^2 + (x(i)-1)^2;
end
end

if VGH(2) > 0
c = 10 + (n-1)*8;
outGr(1) = 16*x(1)^3 - 24*x(1)^2 + c*x(1) - 2;
for i = 2:n
outGr(1) = outGr(1) - 8*x(i)^2;
outGr(i) = 2*(-8*x(1)*x(i) + 8*x(i)^3 + x(i) - 1);
end
end

if VGH(3) > 0
outHes = zeros(n, n);
c = 10 + (n-1)*8;
for i = 2:n
outHes(i, i) = -16*x(1) + 48*x(i)^2 + 2;
outHes(1, i) = -16*x(i);
outHes(i, 1) = -16*x(i);
end
outHes(1, 1) = 48*x(1)^2 - 48*x(1) + c;
else outHes = 0;
end

end
28 changes: 28 additions & 0 deletions Functions/MultiDimensional/POWER.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
function [ outVal, outGr, outHes ] = POWER( x, VGH )
% POWER (CUTE) function

n = length(x);
outVal = 0;
outGr = zeros(n, 1);

if VGH(1) > 0
for i = 1:n
outVal = outVal + (i * x(i))^2;
end
end

if VGH(2) > 0
for i = 1:n
outGr(i) = 2*i^2 * x(i);
end
end

if VGH(3) > 0
outHes = zeros(n, n);
for i = 1:n
outHes(i, i) = 2*i^2;
end
else outHes = 0;
end

end
6 changes: 6 additions & 0 deletions Util/PlotInfoGenerator.m
Original file line number Diff line number Diff line change
Expand Up @@ -60,3 +60,9 @@
infos('ExtTET') = PlotInfo([-0.5 0.2 -0.2 0.2], [-0.34657 0], 2);
infos('FullHessian1') = PlotInfo([-1 4.3 -4 2], [3 -3], 0.05);
infos('Staircase1') = PlotInfo([-0.6 1.3 -1 2], [0 0], 1);

infos('ARWHEAD') = PlotInfo([0 1.5 -1.5 1.5], [1 0], 0);
infos('LIARWHD') = PlotInfo([-3.5 4.5 -3.5 4.5], [1 1], 0);
infos('POWER') = PlotInfo([-1.5 1.5 -1.5 1.5], [0 0], 100);
infos('ENGVAL1') = PlotInfo([-3 3 -3 3], [1 0], 0);
infos('EDENSCH') = PlotInfo([-1 5 -4 2], [2 -1], 0);
5 changes: 5 additions & 0 deletions Util/StartingPointGenerator.m
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,11 @@
startingPoints('ExtTET') = oneNumber(0.1,initialDimension);
startingPoints('FullHessian1') = oneNumber(0.01,initialDimension);
startingPoints('Staircase1') = oneNumber(1,initialDimension);
startingPoints('ARWHEAD') = oneNumber(1,initialDimension);
startingPoints('LIARWHD') = oneNumber(4,initialDimension);
startingPoints('POWER') = oneNumber(1,initialDimension);
startingPoints('ENGVAL1') = oneNumber(2,initialDimension);
startingPoints('EDENSCH') = oneNumber(0,initialDimension);

% starting point for custom function
% startingPoints('CustomFunction') = point_generator(initialDimension...);
Expand Down

0 comments on commit 5378061

Please sign in to comment.