]> gitweb.michael.orlitzky.com - octave.git/blobdiff - optimization/test_functions/trigonometric_gradient1.m
Add trigonometric functions and their tests.
[octave.git] / optimization / test_functions / trigonometric_gradient1.m
diff --git a/optimization/test_functions/trigonometric_gradient1.m b/optimization/test_functions/trigonometric_gradient1.m
new file mode 100644 (file)
index 0000000..134ce86
--- /dev/null
@@ -0,0 +1,27 @@
+function g = trigonometric_gradient1(x)
+  ##
+  ## The gradient of the trigonometric function. See trigonometric1.m
+  ## for more information.
+  ##
+  n  = length(x);
+  g  = zeros(n,1);
+
+  cos_sum = sum(cos(x));
+
+  for k = [ 1 : n ]
+    f_k = n - cos_sum + k*(1 - cos(x(k))) - sin(x(k));
+
+    for j = [ 1 : n ]
+      ## Add to the jth component of g the partial of f^2 with
+      ## respect to x(j). The first term that we add here exists
+      ## regardless of j.
+      g(j) = g(j) + 2*f_k*sin(x(j));
+
+      if (j == k)
+       ## But this term vanishes when j != k.
+       g(j) = g(j) + 2*f_k*k*sin(x(k)) - 2*f_k*cos(x(k));
+      end
+    end
+  end
+
+end