Package edu.jas.ps

Class MultiVarPowerSeriesRing<C extends RingElem<C>>

java.lang.Object
edu.jas.ps.MultiVarPowerSeriesRing<C>
Type Parameters:
C - ring element type
All Implemented Interfaces:
AbelianGroupFactory<MultiVarPowerSeries<C>>, ElemFactory<MultiVarPowerSeries<C>>, MonoidFactory<MultiVarPowerSeries<C>>, RingFactory<MultiVarPowerSeries<C>>, Serializable

public class MultiVarPowerSeriesRing<C extends RingElem<C>> extends Object implements RingFactory<MultiVarPowerSeries<C>>
Multivariate power series ring implementation. Uses lazy evaluated generating function for coefficients.
See Also:
  • Field Details

    • random

      protected static final Random random
      A default random sequence generator.
    • DEFAULT_TRUNCATE

      public static final int DEFAULT_TRUNCATE
      Default truncate.
      See Also:
    • truncate

      int truncate
      Truncate.
    • EVZERO

      public final ExpVector EVZERO
      Zero ExpVector.
    • coFac

      public final RingFactory<C extends RingElem<C>> coFac
      Coefficient ring factory.
    • nvar

      public final int nvar
      The number of variables.
    • vars

      protected String[] vars
      The names of the variables. This value can be modified.
    • ONE

      public final MultiVarPowerSeries<C extends RingElem<C>> ONE
      The constant power series 1 for this ring.
    • ZERO

      public final MultiVarPowerSeries<C extends RingElem<C>> ZERO
      The constant power series 0 for this ring.
  • Constructor Details

    • MultiVarPowerSeriesRing

      private MultiVarPowerSeriesRing()
      No argument constructor.
    • MultiVarPowerSeriesRing

      public MultiVarPowerSeriesRing(GenPolynomialRing<C> fac)
      Constructor.
      Parameters:
      fac - polynomial ring factory.
    • MultiVarPowerSeriesRing

      public MultiVarPowerSeriesRing(RingFactory<C> coFac, int nv)
      Constructor.
      Parameters:
      coFac - coefficient ring factory.
    • MultiVarPowerSeriesRing

      public MultiVarPowerSeriesRing(RingFactory<C> coFac, int nv, int truncate)
      Constructor.
      Parameters:
      coFac - coefficient ring factory.
      truncate - index of truncation.
    • MultiVarPowerSeriesRing

      public MultiVarPowerSeriesRing(RingFactory<C> coFac, String[] names)
      Constructor.
      Parameters:
      coFac - coefficient ring factory.
      names - of the variables.
    • MultiVarPowerSeriesRing

      public MultiVarPowerSeriesRing(RingFactory<C> cofac, int nv, String[] names)
      Constructor.
      Parameters:
      cofac - coefficient ring factory.
      nv - number of variables.
      names - of the variables.
    • MultiVarPowerSeriesRing

      public MultiVarPowerSeriesRing(RingFactory<C> cofac, int nv, int truncate, String[] names)
      Constructor.
      Parameters:
      cofac - coefficient ring factory.
      truncate - index of truncation.
      names - of the variables.
  • Method Details

    • fixPoint

      public MultiVarPowerSeries<C> fixPoint(MultiVarPowerSeriesMap<C> map)
      Fixed point construction.
      Parameters:
      map - a mapping of power series.
      Returns:
      fix point wrt map.
    • toString

      public String toString()
      To String.
      Overrides:
      toString in class Object
      Returns:
      string representation of this.
    • varsToString

      public String varsToString()
      Get a String representation of the variable names.
      Returns:
      names separated by commas.
    • getVars

      public String[] getVars()
      Get the variable names.
      Returns:
      names.
    • toScript

      public String toScript()
      Get a scripting compatible string representation.
      Specified by:
      toScript in interface ElemFactory<C extends RingElem<C>>
      Returns:
      script compatible representation for this ElemFactory.
      See Also:
    • equals

      public boolean equals(Object B)
      Comparison with any other object.
      Overrides:
      equals in class Object
      See Also:
    • hashCode

      public int hashCode()
      Hash code for this .
      Overrides:
      hashCode in class Object
      See Also:
    • getZERO

      public MultiVarPowerSeries<C> getZERO()
      Get the zero element.
      Specified by:
      getZERO in interface AbelianGroupFactory<C extends RingElem<C>>
      Returns:
      0 as MultiVarPowerSeries.
    • getONE

      public MultiVarPowerSeries<C> getONE()
      Get the one element.
      Specified by:
      getONE in interface MonoidFactory<C extends RingElem<C>>
      Returns:
      1 as MultiVarPowerSeries.
    • generators

      public List<MultiVarPowerSeries<C>> generators()
      Get a list of the generating elements.
      Specified by:
      generators in interface ElemFactory<C extends RingElem<C>>
      Returns:
      list of generators for the algebraic structure.
      See Also:
    • isFinite

      public boolean isFinite()
      Is this structure finite or infinite.
      Specified by:
      isFinite in interface ElemFactory<C extends RingElem<C>>
      Returns:
      true if this structure is finite, else false.
      See Also:
    • truncate

      public int truncate()
      Truncate.
      Returns:
      truncate index of power series.
    • setTruncate

      public int setTruncate(int t)
      Set truncate.
      Parameters:
      t - new truncate index.
      Returns:
      old truncate index of power series.
    • getEXP

      public MultiVarPowerSeries<C> getEXP(int r)
      Get the power series of the exponential function.
      Parameters:
      r - variable for the direction.
      Returns:
      exp(x_r) as MultiVarPowerSeries.
    • getSIN

      public MultiVarPowerSeries<C> getSIN(int r)
      Get the power series of the sinus function.
      Parameters:
      r - variable for the direction.
      Returns:
      sin(x_r) as MultiVarPowerSeries.
    • getCOS

      public MultiVarPowerSeries<C> getCOS(int r)
      Get the power series of the cosinus function.
      Parameters:
      r - variable for the direction.
      Returns:
      cos(x_r) as MultiVarPowerSeries.
    • getTAN

      public MultiVarPowerSeries<C> getTAN(int r)
      Get the power series of the tangens function.
      Parameters:
      r - variable for the direction.
      Returns:
      tan(x_r) as MultiVarPowerSeries.
    • solvePDE

      public MultiVarPowerSeries<C> solvePDE(MultiVarPowerSeries<C> f, C c, int r)
      Solve an partial differential equation. y_r' = f(y_r) with y_r(0) = c.
      Parameters:
      f - a MultiVarPowerSeries.
      c - integration constant.
      r - variable for the direction.
      Returns:
      f.integrate(c).
    • isCommutative

      public boolean isCommutative()
      Query if this ring is commuative.
      Specified by:
      isCommutative in interface MonoidFactory<C extends RingElem<C>>
      Returns:
      true, if this ring is commutative, else false.
    • isAssociative

      public boolean isAssociative()
      Query if this ring is associative.
      Specified by:
      isAssociative in interface MonoidFactory<C extends RingElem<C>>
      Returns:
      true if this ring is associative, else false.
    • isField

      public boolean isField()
      Query if this ring is a field.
      Specified by:
      isField in interface RingFactory<C extends RingElem<C>>
      Returns:
      true if this ring is a field, else false.
    • characteristic

      public BigInteger characteristic()
      Characteristic of this ring.
      Specified by:
      characteristic in interface RingFactory<C extends RingElem<C>>
      Returns:
      characteristic of this ring.
    • fromInteger

      public MultiVarPowerSeries<C> fromInteger(long a)
      Get a (constant) MultiVarPowerSeries<C> from a long value.
      Specified by:
      fromInteger in interface ElemFactory<C extends RingElem<C>>
      Parameters:
      a - long.
      Returns:
      a MultiVarPowerSeries<C>.
    • fromInteger

      public MultiVarPowerSeries<C> fromInteger(BigInteger a)
      Get a (constant) MultiVarPowerSeries<C> from a java.math.BigInteger.
      Specified by:
      fromInteger in interface ElemFactory<C extends RingElem<C>>
      Parameters:
      a - BigInteger.
      Returns:
      a MultiVarPowerSeries<C>.
    • polyRing

      public GenPolynomialRing<C> polyRing()
      Get the corresponding GenPolynomialRing<C>.
      Returns:
      GenPolynomialRing<C>.
    • fromPolynomial

      public MultiVarPowerSeries<C> fromPolynomial(GenPolynomial<C> a)
      Get a MultiVarPowerSeries<C> from a GenPolynomial<C>.
      Parameters:
      a - GenPolynomial<C>.
      Returns:
      a MultiVarPowerSeries<C>.
    • fromPolynomial

      public List<MultiVarPowerSeries<C>> fromPolynomial(List<GenPolynomial<C>> A)
      Get a list of MultiVarPowerSeries<C> from a list of GenPolynomial<C>.
      Parameters:
      A - list of GenPolynomial<C>.
      Returns:
      a list of MultiVarPowerSeries<C>.
    • fromPowerSeries

      public MultiVarPowerSeries<C> fromPowerSeries(UnivPowerSeries<C> ps, int r)
      Get a MultiVarPowerSeries<C> from a univariate power series.
      Parameters:
      ps - UnivPowerSeries<C>.
      r - variable for the direction.
      Returns:
      a MultiVarPowerSeries<C>.
    • random

      public MultiVarPowerSeries<C> random()
      Generate a random power series with k = 5, d = 0.7.
      Returns:
      a random power series.
    • random

      public MultiVarPowerSeries<C> random(int k)
      Generate a random power series with d = 0.7.
      Specified by:
      random in interface ElemFactory<C extends RingElem<C>>
      Parameters:
      k - bit-size of random coefficients.
      Returns:
      a random power series.
    • random

      public MultiVarPowerSeries<C> random(int k, Random rnd)
      Generate a random power series with d = 0.7.
      Specified by:
      random in interface ElemFactory<C extends RingElem<C>>
      Parameters:
      k - bit-size of random coefficients.
      rnd - is a source for random bits.
      Returns:
      a random power series.
    • random

      public MultiVarPowerSeries<C> random(int k, float d)
      Generate a random power series.
      Parameters:
      k - bit-size of random coefficients.
      d - density of non-zero coefficients.
      Returns:
      a random power series.
    • random

      public MultiVarPowerSeries<C> random(int k, float d, Random rnd)
      Generate a random power series.
      Parameters:
      k - bit-size of random coefficients.
      d - density of non-zero coefficients.
      rnd - is a source for random bits.
      Returns:
      a random power series.
    • generate

      public MultiVarPowerSeries<C> generate(Function<ExpVector,C> gener)
      Generate a power series via lambda expression.
      Parameters:
      gener - lambda expression.
      Returns:
      a generated power series.
    • copy

      Copy power series.
      Specified by:
      copy in interface ElemFactory<C extends RingElem<C>>
      Parameters:
      c - a power series.
      Returns:
      a copy of c.
    • parse

      public MultiVarPowerSeries<C> parse(String s)
      Parse a power series. Note: not implemented.
      Specified by:
      parse in interface ElemFactory<C extends RingElem<C>>
      Parameters:
      s - String.
      Returns:
      power series from s.
    • parse

      public MultiVarPowerSeries<C> parse(Reader r)
      Parse a power series. Note: not implemented.
      Specified by:
      parse in interface ElemFactory<C extends RingElem<C>>
      Parameters:
      r - Reader.
      Returns:
      next power series from r.
    • seriesOfTaylor

      public MultiVarPowerSeries<C> seriesOfTaylor(TaylorFunction<C> f, List<C> a)
      Taylor power series.
      Parameters:
      f - function.
      a - expansion point.
      Returns:
      Taylor series of f.