]>
Commit | Line | Data |
---|---|---|
fe4da5cc | 1 | * |
2 | * $Id$ | |
3 | * | |
4 | * $Log$ | |
5 | * Revision 1.1.1.1 1996/04/01 15:02:26 mclareni | |
6 | * Mathlib gen | |
7 | * | |
8 | * | |
9 | #include "gen/pilot.h" | |
10 | SUBROUTINE DSPVD1(F,K,M,T,C,NERR) | |
11 | ||
12 | #include "gen/imp64.inc" | |
13 | DIMENSION T(*),C(*) | |
14 | CHARACTER NAME*(*) | |
15 | CHARACTER*80 ERRTXT | |
16 | PARAMETER (NAME = 'DSPVD1') | |
17 | ||
18 | ************************************************************************ | |
19 | * NORBAS, VERSION: 15.03.1993 | |
20 | ************************************************************************ | |
21 | * | |
22 | * DSPVD1 COMPUTES THE COEFFICIENTS C(1),...,C(M-K-1) OF A POLYNOMIAL | |
23 | * VARIATION DIMINISHING SPLINE APPROXIMATION S(X) IN B-SPLINE | |
24 | * REPRESENTATION | |
25 | * | |
26 | * S(X) = SUMME(I=1,...,M-K-1) C(I) * B(I,K)(X) | |
27 | * | |
28 | * TO A USER SUPPLIED FUNCTION Y=F(X). | |
29 | * | |
30 | * THE FUNCTIONS B(I,K)(X) ARE NORMALIZED B-SPLINES OF DEGREE K | |
31 | * (0<= K <= 25) WITH INDEX I (1 <= I <= M-K-1) OVER A SET OF | |
32 | * SPLINE-KNOTS | |
33 | * T(1),T(2), ... ,T(M) ( M >= 2*K+2 ) | |
34 | * (KNOTS IN ASCENDING ORDER, WITH MULTIPLICITIES NOT GREATER | |
35 | * THAN K+1). | |
36 | * THE FUNCTION VALUE OF THE NORMALIZED B-SPLINE B(I,K)(X) IS | |
37 | * IDENTICALLY ZERO OUTSIDE THE INTERVAL T(I) <= X < T(I+K+1). | |
38 | * THE NORMALIZATION OF N(X) = B(I,K)(X) IS SUCH THAT THE INTGRAL OF | |
39 | * N(X) OVER THE WHOLE X-RANGE EQUALS | |
40 | * ( T(I+K+1) - T(I) ) / (K+1) . | |
41 | * | |
42 | * PARAMETERS: | |
43 | * | |
44 | * F (DOUBLE PRECISION) USER SUPPLIED FUNCTION F(X) FOR WHICH | |
45 | * THE CORRESPONDING SPLINE APPROXIMATION HAS TO BE COMPUTED. | |
46 | * K (INTEGER) DEGREE (= ORDER - 1) OF B-SPLINES. | |
47 | * M (INTEGER) NUMBER OF KNOTS FOR THE B-SPLINES. | |
48 | * T (DOUBLE PRECISION) ARRAY OF AT LEAST ORDER M CONTAINING THE | |
49 | * KNOTS, ON ENTRY. | |
50 | * C (DOUBLE PRECISION) ARRAY OF AT LEAST ORDER M-K-1. ON EXIT | |
51 | * C(1),...,C(M-K-1) CONTAIN THE COEFFICIENTS OF THE B-SPLINE | |
52 | * REPRESENTATION OF S(X). | |
53 | * NERR (INTEGER) ERROR INDICATOR. ON EXIT: | |
54 | * = 0: NO ERROR DETECTED | |
55 | * = 1: AT LEAST ONE OF THE CONSTANTS K , M IS ILLEGAL | |
56 | * | |
57 | * ERROR MESSAGES: | |
58 | * | |
59 | * IF ONE OF THE FOLLOWING RELATION IS SATISFIED BY THE CHOSEN INPUT- | |
60 | * PARAMETERS THE PROGRAM RETURNS, AND AN ERROR MESSAGE IS PRINTED: | |
61 | * K < 1 OR K > 25 OR | |
62 | * M < 2*K+2 . | |
63 | * | |
64 | ************************************************************************ | |
65 | ||
66 | PARAMETER (Z1 = 1) | |
67 | ||
68 | NERR=1 | |
69 | IF(K .LT. 1 .OR. K .GT. 25) THEN | |
70 | WRITE(ERRTXT,101) 'K',K | |
71 | CALL MTLPRT(NAME,'E210.1',ERRTXT) | |
72 | ELSEIF(M .LT. 2*K+2) THEN | |
73 | WRITE(ERRTXT,101) 'M',M | |
74 | CALL MTLPRT(NAME,'E210.2',ERRTXT) | |
75 | ELSE | |
76 | NERR=0 | |
77 | R=Z1/K | |
78 | DO 10 I = 1,M-K-1 | |
79 | 10 C(I)=F(R*DVSUM(K,T(I+1),T(I+2))) | |
80 | ENDIF | |
81 | ||
82 | RETURN | |
83 | ||
84 | 101 FORMAT(1X,A5,' =',I6,' NOT IN RANGE') | |
85 | END | |
86 | ||
87 | ||
88 |