zoukankan      html  css  js  c++  java
  • 一个fortran IMSL实例(Fortran PowerStation 4.0)

    在Fortran PowerStation 4.0中自带IMSL,可看帮助文件,新建一个工程,加入它的例子bsint_ex.for

    (.for为标准fortran语言格式文本)

    C
    C Compute the spline interpolant, returning the B-spline coefficients.
    C
    C In this example, a spline interpolant S, to F(X) = SQRT(X), is
    C computed. The interpolated values are then compared with the exact
    C function values using the IMSL routine BSVAL.
    C
    C Output:
    C
    C       X                   S(X)                  Error
    C
    C  0.0000                 0.0000               0.000000
    C  0.1250                 0.2918               0.061781
    C  0.2500                 0.5000               0.000000
    C  0.3750                 0.6247              -0.012311
    C  0.5000                 0.7071               0.000000
    C  0.6250                 0.7886               0.002013
    C  0.7500                 0.8660               0.000000
    C  0.8750                 0.9365              -0.001092
    C  1.0000                 1.0000               0.000000
    C
          USE MSIMSLMD
    C
          INTEGER    KORDER, NDATA, NKNOT
          PARAMETER  (KORDER=3, NDATA=5, NKNOT=NDATA+KORDER)
    C
          INTEGER    I, NCOEF, NOUT
          DOUBLE PRECISION BSCOEF(NDATA), BT, F, FDATA(NDATA), DBLE,
         &           DSQRT, X, XDATA(NDATA), XKNOT(NKNOT), XT
          INTRINSIC  DBLE, DSQRT

    C                                  Define function
          F(X) = DSQRT(X)
    C                                  Set up interpolation points
          DO 10  I=1, NDATA
             XDATA(I) = DBLE(I-1)/DBLE(NDATA-1)
             FDATA(I) = F(XDATA(I))
       10 CONTINUE
    C                                  Generate knot sequence
          CALL DBSNAK (NDATA, XDATA, KORDER, XKNOT)
    C                                  Interpolate
          CALL DBSINT (NDATA, XDATA, FDATA, KORDER, XKNOT, BSCOEF)
    C                                  Get output unit number
          CALL UMACH (2, NOUT)
    C                                  Write heading
          WRITE (NOUT,99999)
    C                                  Print on a finer grid
          NCOEF = NDATA
          XT    = XDATA(1)
    C                                  Evaluate spline
          BT    = DBSVAL(XT,KORDER,XKNOT,NCOEF,BSCOEF)
          WRITE (NOUT,99998) XT, BT, F(XT) - BT
          DO 20  I=2, NDATA
             XT = (XDATA(I-1)+XDATA(I))/2.0D0
    C                                  Evaluate spline
             BT = DBSVAL(XT,KORDER,XKNOT,NCOEF,BSCOEF)
             WRITE (NOUT,99998) XT, BT, F(XT) - BT
             XT = XDATA(I)
    C                                  Evaluate spline
             BT = DBSVAL(XT,KORDER,XKNOT,NCOEF,BSCOEF)
             WRITE (NOUT,99998) XT, BT, F(XT) - BT
       20 CONTINUE
    99998 FORMAT (' ', F6.4, 15X, F8.4, 12X, F11.6)
    99999 FORMAT (/, 6X, 'X', 19X, 'S(X)', 18X, 'Error', /)
          END

  • 相关阅读:
    Tarjan算法求解桥和边双连通分量(附POJ 3352 Road Construction解题报告)
    无向图求点割集的算法
    hdu 2121无根最小树形图要建一个虚拟节点
    hdu 1576扩展欧几里得算法
    欧几里德算法的扩展-求解不定方程
    hdu 3072 强连通+缩点+最小树形图思想
    1352 集合计数 扩展欧几里德算法
    1247 可能的路径 逆向思维
    Atcoder B
    C. Timofey and a tree 观察题 + dfs模拟
  • 原文地址:https://www.cnblogs.com/djcsch2001/p/2315175.html
Copyright © 2011-2022 走看看