//******************************************************************************
//
// File:    SampledXYSeries.java
// Package: edu.rit.numeric
// Unit:    Class edu.rit.numeric.SampledXYSeries
//
// This Java source file is copyright (C) 2007 by Alan Kaminsky. All rights
// reserved. For further information, contact the author, Alan Kaminsky, at
// ark@cs.rit.edu.
//
// This Java source file is part of the Parallel Java Library ("PJ"). PJ is free
// software; you can redistribute it and/or modify it under the terms of the GNU
// General Public License as published by the Free Software Foundation; either
// version 3 of the License, or (at your option) any later version.
//
// PJ is distributed in the hope that it will be useful, but WITHOUT ANY
// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
// A PARTICULAR PURPOSE. See the GNU General Public License for more details.
//
// A copy of the GNU General Public License is provided in the file gpl.txt. You
// may also obtain a copy of the GNU General Public License on the World Wide
// Web at http://www.gnu.org/licenses/gpl.html.
//
//******************************************************************************

package edu.rit.numeric;

/**
 * Class SampledXYSeries provides a series of (x,y) pairs of real values
 * (type double) where the Y values are computed by sampling a
 * {@linkplain Function} for a series of X values.
 * 

* Class SampledXYSeries is implemented to minimize space rather than time. Each * time x() is called, the x value is computed anew. Each time * y() is called, the x value is computed anew, then the * y value is computed anew by evaluating the function at x. * * @author Alan Kaminsky * @version 06-Jul-2007 */ public class SampledXYSeries extends XYSeries { // Hidden data members. private Function myFunction; private double myXinit; private double myDelta; private int myLength; // Exported constructors. /** * Construct a new sampled series sampling values of the given function. The * y values at indexes 0, 1, 2, ... len-1 are computed by * evaluating theFunction at the x values xinit, * xinit+delta, xinit+2*delta, ... * xinit+(len-1)*delta. * * @param theFunction Function to sample. * @param xinit Initial x value. * @param delta Difference between successive x values. * @param len Length (number of (x,y) pairs). * * @exception NullPointerException * (unchecked exception) Thrown if theFunction is null. * @exception IllegalArgumentException * (unchecked exception) Thrown if len is less than 0. */ public SampledXYSeries (Function theFunction, double xinit, double delta, int len) { super(); if (theFunction == null) { throw new NullPointerException ("SampledXYSeries(): theFunction is null"); } if (len < 0) { throw new IllegalArgumentException ("SampledXYSeries(): len = " + len + " illegal"); } myFunction = theFunction; myXinit = xinit; myDelta = delta; myLength = len; } // Exported operations. /** * Returns the number of values in this series. * * @return Length. */ public int length() { return myLength; } /** * Returns the given X value in this series. * * @param i Index. * * @return The X value in this series at index i. * * @exception ArrayIndexOutOfBoundsException * (unchecked exception) Thrown if i is not in the range * 0 .. length()-1. */ public double x (int i) { return myXinit + i * myDelta; } /** * Returns the given Y value in this series. * * @param i Index. * * @return The Y value in this series at index i. * * @exception ArrayIndexOutOfBoundsException * (unchecked exception) Thrown if i is not in the range * 0 .. length()-1. */ public double y (int i) { return myFunction.f (x (i)); } }

Ads help maintain this website.