1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.commons.math4.legacy.ode;
19
20 import org.apache.commons.math4.legacy.core.Field;
21 import org.apache.commons.math4.legacy.core.RealFieldElement;
22 import org.apache.commons.math4.legacy.core.MathArrays;
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40 public class TestFieldProblem6<T extends RealFieldElement<T>>
41 extends TestFieldProblemAbstract<T> {
42
43
44
45
46
47 public TestFieldProblem6(Field<T> field) {
48 super(field);
49 setInitialConditions(convert(0.0), convert( new double[] { -360.0 }));
50 setFinalConditions(convert(1.0));
51 setErrorScale(convert( new double[] { 1.0 }));
52 }
53
54 @Override
55 public T[] doComputeDerivatives(T t, T[] y) {
56
57 final T[] yDot = MathArrays.buildArray(getField(), getDimension());
58
59
60 T t2 = t.multiply(t);
61 T t4 = t2.multiply(t2);
62 T t5 = t4.multiply(t);
63 for (int i = 0; i < getDimension(); ++i) {
64 yDot[i] = t5.multiply(3).subtract(y[i]);
65 }
66
67 return yDot;
68 }
69
70 @Override
71 public T[] computeTheoreticalState(T t) {
72
73 final T[] y = MathArrays.buildArray(getField(), getDimension());
74
75 for (int i = 0; i < getDimension(); ++i) {
76 y[i] = t.multiply(3).subtract(15).multiply(t).add(60).multiply(t).subtract(180).multiply(t).add(360).multiply(t).subtract(360);
77 }
78
79 return y;
80 }
81 }