Beispiel #1
0
            /// <inheritdoc/>
            /// <exception cref="NumberIsTooLargeException"> if derivation order is greater
            /// than 1</exception>
            public DerivativeStructure value(DerivativeStructure t)
            {
                switch (t.getOrder())
                {
                case 0:
                    return(new DerivativeStructure(t.getFreeParameters(), 0, f.value(t.getValue())));

                case 1:
                {
                    int      parameters  = t.getFreeParameters();
                    double[] derivatives = new double[parameters + 1];
                    derivatives[0] = f.value(t.getValue());
                    double fPrime = f.derivative().value(t.getValue());
                    int[]  orders = new int[parameters];
                    for (int i = 0; i < parameters; ++i)
                    {
                        orders[i]          = 1;
                        derivatives[i + 1] = fPrime * t.getPartialDerivative(orders);
                        orders[i]          = 0;
                    }
                    return(new DerivativeStructure(parameters, 1, derivatives));
                }

                default:
                    throw new NumberIsTooLargeException <Int32, Int32>(t.getOrder(), 1, true);
                }
            }
Beispiel #2
0
 /// <inheritdoc/>
 public DerivativeStructure value(DerivativeStructure t)
 {
     return(new DerivativeStructure(t.getFreeParameters(), t.getOrder(), c));
 }