00001
00002 #define POLYMAX 100
00003 #define SP_NATURAL 1
00004 #define SP_DERIVATIVE 2
00005 #define SP_PERIODIC 3
00006
00007 #define splint(poly,x) (poly.a + (x)*(poly.b + (x)*(poly.c + (x)*poly.d)))
00008 #define splint1(poly,x) (poly.b + (x)*(2.*poly.c + (x)*3.*poly.d))
00009 #define splint2(poly,x) (2.*poly.c + (x)*6.*poly.d)
00010
00011
00012 typedef struct {
00013 real a, b, c, d;
00014 } polynom3;
00015
00016 extern real polynomial(real *xp, real *yp, real *z, real x, real y);
00017
00018 extern void CubicPolynom(real x0, real y0, real x1, real y1,
00019 real x2, real y2, real x3, real y3,
00020 real *ex, real *fx, real *gx,
00021 real *ey, real *fy, real *gy,
00022 real *rd2);
00023
00024 extern void spline(real1D x, real1D y, int n, real yp1, real ypn, real1D d2y,
00025 polynom3 *poly, int flag);
00026
00027 extern void tridag(real1D a, real1D b, real1D c, real1D r, real1D u, int n);
00028
00029 extern void Pspline(real1D x, real1D y, real1D d2y, real lp,
00030 int n, polynom3 *poly);
00031
00032 extern real splint_find(real1D xa, polynom3 *poly, int n, real x);
00033
00034 extern int distmin(polynom3 px, polynom3 py, real xp, real yp, real *tmin,
00035 real t1, real t2, real prec);
00036
00037 extern int polyroot(polynom3 poly, real x1, real x2, real *x, real prec);
00038
00039 extern int polyroots(polynom3 poly, real x1, real x2,
00040 real *x, real y, real prec);
00041
00042 extern void bcucof(real2D f, int i, int j, real *c, int nx, int ny);
00043
00044 extern real bcuint(real t, real u, real *c);
00045
00046 extern real polydistmin(polynom3 px1, polynom3 px2, polynom3 py1, polynom3 py2,
00047 real *t1, real *t2, real ftol);
00048
00049 extern real trapzd(real (*func)(polynom3, polynom3, real),
00050 polynom3 px, polynom3 py,
00051 real a, real b, int n);
00052
00053 extern real qtrap(real (*func)(polynom3, polynom3, real),
00054 polynom3 px, polynom3 py,
00055 real a, real b, real eps);
00056