Fortran Coder

标题: 调用IMSL后输出窗口什么都没,也没结果文件 [打印本页]

作者: wy123    时间: 2018-4-20 10:35
标题: 调用IMSL后输出窗口什么都没,也没结果文件
[Fortran] 纯文本查看 复制代码
program rbf

    Include 'link_fnl_shared.h'
        use numerical_libraries
    !use imsl
        implicit none
!***************************************  参数说明
        integer NumSam, NumVar               !NumSam采样点个数,NumVar变量个数
        parameter(NumSam = 30, NumVar = 3)   !!!!!需要修改
        real Bound(NumVar,2)     !max和min 用于正规化
        real ParaIn(NumSam,NumVar), ParaOut(NumSam)                !采样数据(输入和输出)
        real ParaIn2(NumSam,NumVar), r(NumSam,NumSam), h(NumSam,NumSam), w(NumSam), c, temp
        real p(NumSam), ParaNew(NumVar), rNew(NumSam), hNew(NumSam), pNew, ap(NumSam),f(NumSam)
        integer i, j, k
        
    open (1, file = 'dem01.txt', status = 'old')  !采样数据 !!!!!需要修改文件名

        i = 0
        do while(.not.eof(1))
                i = i + 1
                read(1,*) ParaIn(i,1), ParaIn(i,2),ParaIn(i,3),f(i),ap(i),ParaOut(i)!!!!!需要修改

        enddo
        close(1)

!*  找max和min
        do i = 1, NumVar
                Bound(i,1) = ParaIn(1,i)
                Bound(i,2) = ParaIn(1,i)
        enddo
        do i = 2, NumSam
                do j = 1, NumVar
                        if (ParaIn(i,j) < Bound(j,1)) then        
                                Bound(j,1) = ParaIn(i,j)        
                        endif
                        if (ParaIn(i,j) > Bound(j,2)) then        
                                Bound(j,2) = ParaIn(i,j)        
                        endif
                enddo
        enddo

!**  中心化数据到[-1,+1]
        do i = 1, NumSam
                do j = 1, NumVar
                        ParaIn2(i,j) = (2*ParaIn(i,j)-Bound(j,1)-Bound(j,2)) / (Bound(j,2)-Bound(j,1))        
                enddo
        enddo
!***
        c = 0        !高斯径向基的系数c=正规化距离的平均值
        do i = 1, NumSam
                do j = 1, NumSam
                        temp = 0
                        do k = 1, NumVar
                                temp = temp + (ParaIn2(i,k) - ParaIn2(j,k))**2
                        enddo
                        r(i,j) = sqrt(temp)
                        c = c + r(i,j)
                enddo         
        enddo
        c = c / NumSam**2
        do i = 1, NumSam
                do j = 1, NumSam
                        h(i,j) = exp(-r(i,j)**2 / c**2)
                enddo
    enddo
   
        call LSARG(NumSam, h, NumSam, ParaOut, 1, w)    !得到系数w
   
        
!****代入原样本检验
        do i = 1, NumSam
                p(i) = 0
                do j = 1, NumSam
                        p(i) = p(i) + h(i,j) * w(j)
                enddo        
                write(*,*) ParaOut(i), p(i)
        enddo


        open(2, file = 'outdem003.txt', status = 'unknown')
        do i = 1, NumVar
                write(2, "(2f15.5)") Bound(i,1), Bound(i,2)
        enddo
        write(2, "(f15.5)") c
        do i = 1, NumSam
                write(2, "(30f15.5)") (ParaIn2(i,j), j = 1, NumVar)   !NumVar<30
        enddo
        do i = 1, NumSam
                write(2, "(f15.5)") w(i)
    enddo
   
      
    end program
   


dem01.txt

1.2 KB, 下载次数: 7


作者: wy123    时间: 2018-4-20 10:37
然后就是结果黑色窗口一闪而过,结果输出也不显示成功或者错误。
作者: Jackdaw    时间: 2018-4-20 10:43
和运行方式有关系吧

试试下面方法之一

1.运行不调试
2.在程序尾加一句read(*,*)
作者: wy123    时间: 2018-4-20 10:51
Jackdaw 发表于 2018-4-20 10:43
和运行方式有关系吧

试试下面方法之一

您好 十分感谢您的回答  但是两个方法都试过了  结果还是一样。没有输出文件且输出窗口不显示成功或者错误!
作者: fcode    时间: 2018-4-21 08:16
我没有修改任何代码,在我这里的屏幕输出为
   119.8400       119.8400
   112.8700       112.8700
   108.2400       108.2400
   128.7700       128.7698
   113.7600       113.7600
   139.7800       139.7800
   127.9800       127.9800
   138.4000       138.3999
   141.1700       141.1698
   154.3800       154.3800
   132.2100       132.2099
   155.3500       155.3499
   129.2500       129.2501
   142.9800       142.9801
   113.3500       113.3502
   129.4200       129.4199
   119.0800       119.0800
   147.8700       147.8700
   151.9900       151.9899
   120.5400       120.5401
   118.0200       118.0203
   113.2700       113.2700
   136.8900       136.8901
   124.6800       124.6799
   117.1600       117.1600
   123.6300       123.6300
   135.6200       135.6202
   115.5100       115.5102
   147.2300       147.2300
   120.0700       120.0700

OutDem003.txt 文件输出结果为:
       20.03000       29.81000
        1.02000        2.99000
       30.11000       39.75000
        1.35034
       -1.00000        0.89848        0.66805
        0.22086        0.82741       -0.16805
        0.87117        0.69543       -0.85270
        0.60123       -0.54315       -0.51867
       -0.69734        0.18782       -0.78216
       -0.24131       -1.00000       -0.46888
        0.06339       -0.08629       -0.07054
        0.91820       -0.42132        0.14523
       -0.76483       -0.65482        0.00622
        0.83231       -0.57360        0.90871
        0.55010       -0.16751        0.05602
       -0.16973       -0.79695        0.95228
       -0.62986        0.21827        0.26556
        0.00614       -0.02538        1.00000
        0.12883        0.49239       -0.65145
       -0.84254        0.57360        0.51452
        0.41309        0.34010       -0.39627
       -0.57873       -0.93909        0.36307
       -0.06748       -0.83756        0.62448
        0.22699       -0.38071       -0.89419
       -0.47853        0.02538       -0.58714
       -0.37628        0.43147       -0.68257
        0.48057       -0.26904        0.32365
       -0.41309        0.78680        0.80705
        0.76074        0.65482       -0.32158
        1.00000        1.00000        0.74274
        0.65235        0.06599        0.47095
       -0.29448       -0.31980       -1.00000
        0.32720       -0.71574        0.17012
       -0.91411        0.28934       -0.22822
       58.86483
       35.64080
      168.60979
     -213.02975
      482.84708
        1.14506
      832.45135
      250.25693
      206.93732
      201.54350
      183.15138
      437.63736
     -214.97588
       62.41412
      -98.66692
      110.69569
      -75.31155
      -23.54513
     -549.66577
       93.36781
    -1022.24377
      154.78653
    -1478.49731
      -31.09103
     -131.95718
       69.51846
      351.78543
      120.82651
      572.92511
       75.13556

作者: wy123    时间: 2018-4-22 08:56
fcode 发表于 2018-4-21 08:16
我没有修改任何代码,在我这里的屏幕输出为
   119.8400       119.8400
   112.8700       112.8700

您好,目前我在这个网盘链接下重装了软件  IMSL也重装了  现在还是黑色窗口一闪而过  不出结果!!  
作者: fcode    时间: 2018-4-24 10:58
单步调试一下,看运行到哪一步了。
作者: wy123    时间: 2018-4-25 10:31
本帖最后由 wy123 于 2018-4-25 10:33 编辑
fcode 发表于 2018-4-24 10:58
单步调试一下,看运行到哪一步了。

单步调试 总是出现这个图片D:\Documents\调试     然后就是结果那个样子   D:\Documents\结果

调试.png (15.71 KB, 下载次数: 508)

调试

调试

结果.png (24.91 KB, 下载次数: 506)

结果

结果

作者: vvt    时间: 2018-4-25 14:34
请使用 debug 方式编译并调试
作者: wy123    时间: 2018-4-25 15:18
额,换成Debug,结果如下所示。

单步调试.png (130.56 KB, 下载次数: 517)

调试1

调试1

单步调试1.png (7.29 KB, 下载次数: 503)

调试2

调试2

最后调试结果.png (19.58 KB, 下载次数: 468)

最后结果

最后结果

作者: vvt    时间: 2018-4-25 16:10
本帖最后由 vvt 于 2018-4-25 16:12 编辑

图片上看着没啥问题。继续调试吧。

请你了解,调试不是为了得到一个结果。(你给出的“最后调试结果.png”图片所示,并不是结果,此图的内容可以当做没看见)

调试是为了找到错误的原因,一步一步走,看是否和你期望的一致?然后判断为什么会不一致。
比如说,你现在的问题是没有输出。那么请在输出语句加入下断点。看程序是否执行到“输出语句”这里来了?

http://debug.w.fcode.cn
http://v.fcode.cn/video-debugger.html
可以教你如何调试。

作者: wy123    时间: 2018-4-25 16:25
本帖最后由 wy123 于 2018-4-25 16:58 编辑

好的,十分感谢您的回答!是的,刚刚设置完输出语句前的断点时  调试直接就跳出来了。  没有执行刚输出语句

然后就是一用到
[Fortran] 纯文本查看 复制代码
        call LSARG (NumSam, h, NumSam, ParaOut, 1, w)    !得到系数w

就会直接跳出来。

作者: 小子wx    时间: 2018-5-8 09:32
应该是IMSL过期了,找下有没有其他破解文件,找到了记得给我发一份哈,邮箱:srchai1989@gmail.com




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2