diff --git a/Functions/MultiDimensional/ARWHEAD.m b/Functions/MultiDimensional/ARWHEAD.m new file mode 100644 index 0000000..304219c --- /dev/null +++ b/Functions/MultiDimensional/ARWHEAD.m @@ -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 \ No newline at end of file diff --git a/Functions/MultiDimensional/EDENSCH.m b/Functions/MultiDimensional/EDENSCH.m new file mode 100644 index 0000000..a7ef35f --- /dev/null +++ b/Functions/MultiDimensional/EDENSCH.m @@ -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 \ No newline at end of file diff --git a/Functions/MultiDimensional/ENGVAL1.m b/Functions/MultiDimensional/ENGVAL1.m new file mode 100644 index 0000000..2455a50 --- /dev/null +++ b/Functions/MultiDimensional/ENGVAL1.m @@ -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 \ No newline at end of file diff --git a/Functions/MultiDimensional/LIARWHD.m b/Functions/MultiDimensional/LIARWHD.m new file mode 100644 index 0000000..4dc6cd7 --- /dev/null +++ b/Functions/MultiDimensional/LIARWHD.m @@ -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 \ No newline at end of file diff --git a/Functions/MultiDimensional/POWER.m b/Functions/MultiDimensional/POWER.m new file mode 100644 index 0000000..8d19560 --- /dev/null +++ b/Functions/MultiDimensional/POWER.m @@ -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 \ No newline at end of file diff --git a/Util/PlotInfoGenerator.m b/Util/PlotInfoGenerator.m index 86bfb5d..e714bed 100644 --- a/Util/PlotInfoGenerator.m +++ b/Util/PlotInfoGenerator.m @@ -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); diff --git a/Util/StartingPointGenerator.m b/Util/StartingPointGenerator.m index c1eed62..ca40223 100644 --- a/Util/StartingPointGenerator.m +++ b/Util/StartingPointGenerator.m @@ -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...);