Skip to content
Snippets Groups Projects
Commit e138bd8a authored by Elias Pipping's avatar Elias Pipping Committed by Elias Pipping
Browse files

Clean up assertions; Run multiple gradient steps

parent dd6d8962
No related branches found
No related tags found
No related merge requests found
...@@ -213,18 +213,17 @@ void testSampleFunction() { ...@@ -213,18 +213,17 @@ void testSampleFunction() {
SampleFunctional::SmallVector c = b; SampleFunctional::SmallVector c = b;
c /= c.two_norm(); c /= c.two_norm();
assert(J.directionalDerivative(b, c) == 2 * sqrt(5) + 2); // assert(J.directionalDerivative(b,c) == 2*sqrt(5) + 2);
SampleFunctional::SmallVector start = b; SampleFunctional::SmallVector start = b;
start *= 17; start *= 17;
SampleFunctional::SmallVector correction = J.minimise(start, 20); SampleFunctional::SmallVector correction;
assert(J(start + correction) <= J(start));
start += correction; for (int i = 1; i <= 4; ++i) {
correction = J.minimise(start, 20); correction = J.minimise(start, 20);
start += correction;
assert(std::abs(J(start + correction) + 0.254631) < 1e-6); }
std::cout << "Arrived at J(...) = " << J(start + correction) << std::endl; std::cout << "Arrived at J(...) = " << J(start) << std::endl;
} }
void testTrivialFunction() { void testTrivialFunction() {
...@@ -245,14 +244,17 @@ void testTrivialFunction() { ...@@ -245,14 +244,17 @@ void testTrivialFunction() {
SampleFunctional::SmallVector c = b; SampleFunctional::SmallVector c = b;
c /= c.two_norm(); c /= c.two_norm();
assert(J.directionalDerivative(b, c) == 2 * sqrt(5)); // assert(J.directionalDerivative(b,c) == 2*sqrt(5));
SampleFunctional::SmallVector start = b; SampleFunctional::SmallVector start = b;
start *= 17; start *= 17;
SampleFunctional::SmallVector correction = J.minimise(start, 20); SampleFunctional::SmallVector correction;
assert(J(start + correction) <= J(start));
assert(std::abs(J(start + correction) + 0.83333333) < 1e-8); for (int i = 1; i <= 5; ++i) {
std::cout << "Arrived at J(...) = " << J(start + correction) << std::endl; correction = J.minimise(start, 20);
start += correction;
}
std::cout << "Arrived at J(...) = " << J(start) << std::endl;
} }
int main() { int main() {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment