2
* Licensed to the Apache Software Foundation (ASF) under one or more
3
* contributor license agreements. See the NOTICE file distributed with
4
* this work for additional information regarding copyright ownership.
5
* The ASF licenses this file to You under the Apache License, Version 2.0
6
* (the "License"); you may not use this file except in compliance with
7
* the License. You may obtain a copy of the License at
9
* http://www.apache.org/licenses/LICENSE-2.0
11
* Unless required by applicable law or agreed to in writing, software
12
* distributed under the License is distributed on an "AS IS" BASIS,
13
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
* See the License for the specific language governing permissions and
15
* limitations under the License.
18
package org.apache.commons.math.ode;
21
* This class is used in the junit tests for the ODE integrators.
23
* <p>This specific problem is the following differential equation :
27
* with the initial condition y (0) = 0. The solution of this equation
28
* is the following function :
30
* y (t) = t^2 + 2 (ext (- t^2 / 2) - 1)
36
extends TestProblemAbstract {
38
/** theoretical state */
44
public TestProblem2() {
46
double[] y0 = { 0.0 };
47
setInitialConditions(0.0, y0);
48
setFinalConditions(1.0);
49
double[] errorScale = { 1.0 };
50
setErrorScale(errorScale);
51
y = new double[y0.length];
56
* @param problem problem to copy
58
public TestProblem2(TestProblem2 problem) {
60
y = (double[]) problem.y.clone();
65
* @return a copy of the instance
67
public Object clone() {
68
return new TestProblem2(this);
71
public void doComputeDerivatives(double t, double[] y, double[] yDot) {
73
// compute the derivatives
74
for (int i = 0; i < n; ++i)
75
yDot[i] = t * (t * t - y[i]);
79
public double[] computeTheoreticalState(double t) {
81
double c = t2 + 2 * (Math.exp (-0.5 * t2) - 1);
82
for (int i = 0; i < n; ++i) {