diff liboctave/CollocWt.h @ 3:9a4c07481e61

[project @ 1993-08-08 01:20:23 by jwe] Initial revision
author jwe
date Sun, 08 Aug 1993 01:21:46 +0000
parents
children 780cbbc57b7c
line wrap: on
line diff
new file mode 100644
--- /dev/null
+++ b/liboctave/CollocWt.h
@@ -0,0 +1,151 @@
+// CollocWt.h                                                -*- C++ -*-
+/*
+
+Copyright (C) 1992, 1993 John W. Eaton
+
+This file is part of Octave.
+
+Octave 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 2, or (at your option) any
+later version.
+
+Octave 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.
+
+You should have received a copy of the GNU General Public License
+along with Octave; see the file COPYING.  If not, write to the Free
+Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+*/
+
+#if !defined (_CollocWt_h)
+#define _CollocWt_h 1
+
+#ifdef __GNUG__
+#pragma interface
+#endif
+
+#include <iostream.h>
+#include "Matrix.h"
+
+#ifndef Vector
+#define Vector ColumnVector
+#endif
+
+class CollocWt
+{
+public:
+
+  CollocWt (void);
+  CollocWt (int ncol, int include_left, int include_right);
+  CollocWt (int ncol, int include_left, int include_right, double left,
+	    double right);
+  CollocWt (int ncol, double alpha, double beta, int include_left,
+	    int include_right);  
+  CollocWt (int ncol, double alpha, double beta, int include_left,
+	    int include_right, double left, double right);
+
+  CollocWt (const CollocWt&);
+
+  CollocWt& operator = (const CollocWt&);
+
+  CollocWt& resize (int ncol);
+
+  CollocWt& add_left (void);
+  CollocWt& delete_left (void);
+  CollocWt& set_left (double val);
+
+  CollocWt& add_right (void);
+  CollocWt& delete_right (void);
+  CollocWt& set_right (double val);
+
+  CollocWt& set_alpha (double val);
+  CollocWt& set_beta (double val);
+
+  int ncol (void) const;
+  int left_included (void) const;
+  int right_included (void) const;
+
+  double left (void) const;
+  double right (void) const;
+  double width (void) const;
+
+  double alpha (void) const;
+  double beta (void) const;
+
+  Vector roots (void);
+  Vector quad (void);
+  Vector quad_weights (void);
+
+  Matrix first (void);
+  Matrix second (void);
+
+  friend ostream& operator << (ostream&, const CollocWt&);
+
+protected:
+
+  int n;
+  int nt;
+
+  int inc_left;
+  int inc_right;
+
+  double lb;
+  double rb;
+
+  double Alpha;
+  double Beta;
+
+  Vector r;
+  Vector q;
+
+  Matrix A;
+  Matrix B;
+
+  int initialized;
+
+  void init (void);
+
+  void error (const char *msg);
+};
+
+inline int
+CollocWt::ncol (void) const 
+{
+  return n;
+}
+
+inline int CollocWt::left_included (void) const { return inc_left; }
+inline int CollocWt::right_included (void) const { return inc_right; }
+inline double CollocWt::left (void) const { return lb; }
+inline double CollocWt::right (void) const { return rb; }
+inline double CollocWt::width (void) const { return rb - lb; }
+inline double CollocWt::alpha (void) const { return Alpha; }
+inline double CollocWt::beta (void) const { return Beta; }
+
+inline Vector CollocWt::roots (void)
+  { if (!initialized) init (); return r; }
+
+inline Vector CollocWt::quad (void)
+  { if (!initialized) init (); return q; }
+
+inline Vector CollocWt::quad_weights (void)
+  { return quad (); }
+
+inline Matrix CollocWt::first (void)
+  { if (!initialized) init (); return A; }
+
+inline Matrix CollocWt::second (void)
+  { if (!initialized) init (); return B; }
+
+#endif
+
+/*
+;;; Local Variables: ***
+;;; mode: C++ ***
+;;; page-delimiter: "^/\\*" ***
+;;; End: ***
+*/