1 /* 2 * Licensed to the Hipparchus project 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 Hipparchus project 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 8 * 9 * https://www.apache.org/licenses/LICENSE-2.0 10 * 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. 16 */ 17 package org.hipparchus.analysis.differentiation; 18 19 import org.hipparchus.CalculusFieldElement; 20 import org.hipparchus.exception.MathIllegalArgumentException; 21 22 /** Interface representing both the value and the differentials of a function. 23 * @param <S> the type of the field elements 24 * @param <T> the type of the function derivative 25 * @since 1.7 26 */ 27 public interface FieldDerivative<S extends CalculusFieldElement<S>, T extends FieldDerivative<S, T>> extends CalculusFieldElement<T> { 28 29 /** Get the number of free parameters. 30 * @return number of free parameters 31 */ 32 int getFreeParameters(); 33 34 /** Get the derivation order. 35 * @return derivation order 36 */ 37 int getOrder(); 38 39 /** Get the value part of the function. 40 * @return value part of the value of the function 41 */ 42 S getValue(); 43 44 /** Get a partial derivative. 45 * @param orders derivation orders with respect to each variable (if all orders are 0, 46 * the value is returned) 47 * @return partial derivative 48 * @see #getValue() 49 * @exception MathIllegalArgumentException if the numbers of variables does not 50 * match the instance 51 * @exception MathIllegalArgumentException if sum of derivation orders is larger 52 * than the instance limits 53 */ 54 S getPartialDerivative(int ... orders) 55 throws MathIllegalArgumentException; 56 57 }