/********************************************************************/ /* Copyright (c) 2017 System fugen G.K. and Yuzi Mizuno */ /* All rights reserved. */ /********************************************************************/ // BLGINT PRODUCES THE B-SPLINE COEFF.S RCOEF OF THE SPLINE OF ORDER // K WITH KNOTS T(I), I=1,..., N + K , WHICH TAKES ON THE VALUE // P(I,NCD) AT TAU(I), I=1,..., N . // // ****** I N P U T ****** // TAU(N)..ARRAY OF LENGTH N , CONTAINING DATA POINT ABSCISSAE. // A S S U M P T I O N . . . TAU IS STRICTLY INCREASING // P(IP,NCD)...CORRESPONDING ARRAY OF LENGTH N , CONTAINING DATA POINT ORDINATES // T(N+K)...KNOT SEQUENCE, OF LENGTH N+K // N.....NUMBER OF DATA POINTS AND DIMENSION OF SPLINE SPACE S(K,T) // K.....ORDER OF SPLINE // NCD...SPACE DIMENSION OF POINTS P // IP....ROW DIMENSION OF THE VARIABLE P // IRC...ROW DIMENSION OF THE VARIABLE RCOEF // // ****** O U T P U T ****** // Q.....ARRAY OF SIZE (2*K-1)*N , CONTAINING THE TRIANGULAR FACTORIZ- // ATION OF THE COEFFICIENT MATRIX OF THE LINEAR SYSTEM FOR THE // B-COEFFICIENTS OF THE SPLINE INTERPOLANT. // THE B-COEFFS FOR THE INTERPOLANT OF AN ADDITIONAL DATA SET // (TAU(I),HTAU(I)), I=1,...,N WITH THE SAME DATA ABSCISSAE CAN // BE OBTAINED WITHOUT GOING THROUGH ALL THE CALCULATIONS IN THIS // ROUTINE, SIMPLY BY LOADING HTAU INTO RCOEF AND THEN // EXECUTING THE CALL B1BSLV ( Q, 2*K-1, N, K-1, K-1, RCOEF ) // RCOEF(IRC,NCD)..THE B-COEFFICIENTS OF THE INTERPOLANT, OF LENGTH N // Function's return value.....AN INTEGER INDICATING SUCCESS (= 1) OR FAILURE (= 2) // THE LINEAR SYSTEM TO BE SOLVED IS (THEORETICALLY) INVERTIBLE IF // AND ONLY IF // T(I) .LT. TAU(I) .LT. TAU(I+K), ALL I. // VIOLATION OF THIS CONDITION IS CERTAIN TO LEAD TO IFLAG = 2. // // ****** M E T H O D ****** // THE I-TH EQUATION OF THE LINEAR SYSTEM A*RCOEF = B FOR THE B-CO- // EFFS OF THE INTERPOLANT ENFORCES INTERPOLATION AT TAU(I), I=1,...,N. // HENCE, B(I) = P(I), ALL I, AND A IS A BAND MATRIX WITH 2K-1 // BANDS (IF IT IS INVERTIBLE). // THE MATRIX A IS GENERATED ROW BY ROW AND STORED, DIAGONAL BY DI- //AGONAL, IN THE R O W S OF THE ARRAY Q, WITH THE MAIN DIAGONAL GO- // ING INTO ROW K . SEE COMMENTS IN THE PROGRAM BELOW. // THE BANDED SYSTEM IS THEN SOLVED BY A CALL TO B1BFAC (WHICH CON- // STRUCTS THE TRIANGULAR FACTORIZATION FOR A AND STORES IT AGAIN IN // Q ), FOLLOWED BY A CALL TO B1BSLV (WHICH THEN OBTAINS THE SOLUTION // RCOEF BY SUBSTITUTION). // B1BFAC DOES NO PIVOTING, SINCE THE TOTAL POSITIVITY OF THE MATRIX // A MAKES THIS UNNECESSARY. // int blgint_( const double *tau, const double *p, const double *t, int k, int n, int ncd, int ip, int irc, double *q, double *rcoef);