diff options
Diffstat (limited to 'src/main/java/org/apache/commons/math/optimization/fitting/HarmonicFunction.java')
-rw-r--r-- | src/main/java/org/apache/commons/math/optimization/fitting/HarmonicFunction.java | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/src/main/java/org/apache/commons/math/optimization/fitting/HarmonicFunction.java b/src/main/java/org/apache/commons/math/optimization/fitting/HarmonicFunction.java new file mode 100644 index 0000000..cce3533 --- /dev/null +++ b/src/main/java/org/apache/commons/math/optimization/fitting/HarmonicFunction.java @@ -0,0 +1,80 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.commons.math.optimization.fitting; + +import org.apache.commons.math.analysis.DifferentiableUnivariateRealFunction; +import org.apache.commons.math.util.FastMath; + +/** Harmonic function of the form <code>f (t) = a cos (ω t + φ)</code>. + * @version $Revision: 990655 $ $Date: 2010-08-29 23:49:40 +0200 (dim. 29 août 2010) $ + * @since 2.0 + */ +public class HarmonicFunction implements DifferentiableUnivariateRealFunction { + + /** Amplitude a. */ + private final double a; + + /** Pulsation ω. */ + private final double omega; + + /** Phase φ. */ + private final double phi; + + /** Simple constructor. + * @param a amplitude + * @param omega pulsation + * @param phi phase + */ + public HarmonicFunction(double a, double omega, double phi) { + this.a = a; + this.omega = omega; + this.phi = phi; + } + + /** {@inheritDoc} */ + public double value(double x) { + return a * FastMath.cos(omega * x + phi); + } + + /** {@inheritDoc} */ + public HarmonicFunction derivative() { + return new HarmonicFunction(a * omega, omega, phi + FastMath.PI / 2); + } + + /** Get the amplitude a. + * @return amplitude a; + */ + public double getAmplitude() { + return a; + } + + /** Get the pulsation ω. + * @return pulsation ω + */ + public double getPulsation() { + return omega; + } + + /** Get the phase φ. + * @return phase φ + */ + public double getPhase() { + return phi; + } + +} |