home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / INFO / FORTRAN / LLSQ.ZIP / PROG6.FOR < prev    next >
Encoding:
Text File  |  1984-03-01  |  9.3 KB  |  120 lines

  1. C     C.L.LAWSON AND R.J.HANSON, JET PROPULSION LABORATORY, 1973 JUN 15 PR600200
  2. C     TO APPEAR IN 'SOLVING LEAST SQUARES PROBLEMS', PRENTICE-HALL, 1974PR600300
  3. C          DEMONSTRATE THE USE OF THE SUBROUTINE   LDP  FOR LEAST       PR600400
  4. C     DISTANCE PROGRAMMING BY SOLVING THE CONSTRAINED LINE DATA FITTING PR600500
  5. C     PROBLEM OF CHAPTER 23.                                            PR600600
  6. C                                                                       PR600700
  7.       DIMENSION E(4,2), F(4), G(3,2), H(3), G2(3,2), H2(3), X(2), Z(2), PR600800
  8.      1W(4)                                                              PR600900
  9.       DIMENSION WLDP(21), S(6), T(4)                                    PR601000
  10.       INTEGER INDEX(3)                                                  PR601100
  11. C                                                                       PR601200
  12. C Set math to execute single precision in 23-bit mantissa format.               
  13.       CALL MPBRQQ
  14. C
  15.       WRITE (6,110)                                                     PR601300
  16.       MDE=4                                                             PR601400
  17.       MDGH=3                                                            PR601500
  18. C                                                                       PR601600
  19.       ME=4                                                              PR601700
  20.       MG=3                                                              PR601800
  21.       N=2                                                               PR601900
  22. C                DEFINE THE LEAST SQUARES AND CONSTRAINT MATRICES.      PR602000
  23.       T(1)=0.25                                                         PR602100
  24.       T(2)=0.5                                                          PR602200
  25.       T(3)=0.5                                                          PR602300
  26.       T(4)=0.8                                                          PR602400
  27. C                                                                       PR602500
  28.       W(1)=0.5                                                          PR602600
  29.       W(2)=0.6                                                          PR602700
  30.       W(3)=0.7                                                          PR602800
  31.       W(4)=1.2                                                          PR602900
  32. C                                                                       PR603000
  33.           DO 10 I=1,ME                                                  PR603100
  34.           E(I,1)=T(I)                                                   PR603200
  35.           E(I,2)=1.                                                     PR603300
  36.    10     F(I)=W(I)                                                     PR603400
  37. C                                                                       PR603500
  38.       G(1,1)=1.                                                         PR603600
  39.       G(1,2)=0.                                                         PR603700
  40.       G(2,1)=0.                                                         PR603800
  41.       G(2,2)=1.                                                         PR603900
  42.       G(3,1)=-1.                                                        PR604000
  43.       G(3,2)=-1.                                                        PR604100
  44. C                                                                       PR604200
  45.       H(1)=0.                                                           PR604300
  46.       H(2)=0.                                                           PR604400
  47.       H(3)=-1.                                                          PR604500
  48. C                                                                       PR604600
  49. C     COMPUTE THE SINGULAR VALUE DECOMPOSITION OF THE MATRIX, E.        PR604700
  50. C                                                                       PR604800
  51.       CALL SVDRS (E,MDE,ME,N,F,1,1,S)                                   PR604900
  52. C                                                                       PR605000
  53.       WRITE (6,120) ((E(I,J),J=1,N),I=1,N)                              PR605100
  54.       WRITE (6,130) F,(S(J),J=1,N)                                      PR605200
  55. C                                                                       PR605300
  56. C     GENERALLY RANK DETERMINATION AND LEVENBERG-MARQUARDT              PR605400
  57. C     STABILIZATION COULD BE INSERTED HERE.                             PR605500
  58. C                                                                       PR605600
  59. C        DEFINE THE CONSTRAINT MATRIX FOR THE Z COORDINATE SYSTEM.      PR605700
  60.           DO 30 I=1,MG                                                  PR605800
  61.               DO 30 J=1,N                                               PR605900
  62.               SM=0.                                                     PR606000
  63.                   DO 20 L=1,N                                           PR606100
  64.    20             SM=SM+G(I,L)*E(L,J)                                   PR606200
  65.    30         G2(I,J)=SM/S(J)                                           PR606300
  66. C         DEFINE CONSTRAINT RT SIDE FOR THE Z COORDINATE SYSTEM.        PR606400
  67.           DO 50 I=1,MG                                                  PR606500
  68.           SM=0.                                                         PR606600
  69.               DO 40 J=1,N                                               PR606700
  70.    40         SM=SM+G2(I,J)*F(J)                                        PR606800
  71.    50     H2(I)=H(I)-SM                                                 PR606900
  72. C                                                                       PR607000
  73.       WRITE (6,140) ((G2(I,J),J=1,N),I=1,MG)                            PR607100
  74.       WRITE (6,150) H2                                                  PR607200
  75. C                                                                       PR607300
  76. C                        SOLVE THE CONSTRAINED PROBLEM IN Z-COORDINATES.PR607400
  77. C                                                                       PR607500
  78.       CALL LDP (G2,MDGH,MG,N,H2,Z,ZNORM,WLDP,INDEX,MODE)                PR607600
  79. C                                                                       PR607700
  80.       WRITE (6,200) MODE,ZNORM                                          PR607800
  81.       WRITE (6,160) Z                                                   PR607900
  82. C                                                                       PR608000
  83. C                    TRANSFORM BACK FROM Z-COORDINATES TO X-COORDINATES.PR608100
  84.           DO 60 J=1,N                                                   PR608200
  85.    60     Z(J)=(Z(J)+F(J))/S(J)                                         PR608300
  86.           DO 80 I=1,N                                                   PR608400
  87.           SM=0.                                                         PR608500
  88.               DO 70 J=1,N                                               PR608600
  89.    70         SM=SM+E(I,J)*Z(J)                                         PR608700
  90.    80     X(I)=SM                                                       PR608800
  91.       RES=ZNORM**2                                                      PR608900
  92.       NP1=N+1                                                           PR609000
  93.           DO 90 I=NP1,ME                                                PR609100
  94.    90     RES=RES+F(I)**2                                               PR609200
  95.       RES=SQRT(RES)                                                     PR609300
  96. C                                    COMPUTE THE RESIDUALS.             PR609400
  97.           DO 100 I=1,ME                                                 PR609500
  98.   100     F(I)=W(I)-X(1)*T(I)-X(2)                                      PR609600
  99.       WRITE (6,170) (X(J),J=1,N)                                        PR609700
  100.       WRITE (6,180) (I,F(I),I=1,ME)                                     PR609800
  101.       WRITE (6,190) RES                                                 PR609900
  102.       STOP                                                              PR610000
  103. C                                                                       PR610100
  104.   110 FORMAT (46H0PROG6..  EXAMPLE OF CONSTRAINED CURVE FITTING,26H USINPR610200
  105.      1G THE SUBROUTINE LDP.,/43H0RELATED INTERMEDIATE QUANTITIES ARE GIVPR610300
  106.      2EN.)                                                              PR610400
  107.   120 FORMAT (10H0V =      ,2F10.5/(10X,2F10.5))                        PR610500
  108.   130 FORMAT (10H0F TILDA =,4F10.5/10H0S =      ,2F10.5)                PR610600
  109.   140 FORMAT (10H0G TILDA =,2F10.5/(10X,2F10.5))                        PR610700
  110.   150 FORMAT (10H0H TILDA =,3F10.5)                                     PR610800
  111.   160 FORMAT (10H0Z =      ,2F10.5)                                     PR610900
  112.   170 FORMAT (52H0THE COEFICIENTS OF THE FITTED LINE F(T)=X(1)*T+X(2),12PR611000
  113.      1H ARE :           /
  114.      2'     X(1) = ',F10.5,14H   AND X(2) = ,F10.5)                     PR611100
  115.   180 FORMAT (30H0THE CONSECUTIVE RESIDUALS ARE/1X,4(I5,F10.5))         PR611200
  116.   190 FORMAT (23H0THE RESIDUALS NORM IS ,F10.5)                         PR611300
  117.   200 FORMAT (18H0MODE (FROM LDP) =,I3,2X,7HZNORM =,F10.5)              PR611400
  118. C                                                                       PR611500
  119.       END                                                               PR611600
  120.