Fortran Coder

查看: 16773|回复: 12
打印 上一主题 下一主题

[数学库] 调用IMSL后输出窗口什么都没,也没结果文件

[复制链接]

14

帖子

2

主题

0

精华

入门

F 币
79 元
贡献
39 点
跳转到指定楼层
楼主
发表于 2018-4-20 10:35:30 | 显示全部楼层 |只看大图 回帖奖励 |倒序浏览 |阅读模式
[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

分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

14

帖子

2

主题

0

精华

入门

F 币
79 元
贡献
39 点
沙发
 楼主| 发表于 2018-4-20 10:37:05 | 显示全部楼层
然后就是结果黑色窗口一闪而过,结果输出也不显示成功或者错误。

14

帖子

2

主题

0

精华

入门

F 币
79 元
贡献
39 点
板凳
 楼主| 发表于 2018-4-20 10:51:59 | 显示全部楼层
Jackdaw 发表于 2018-4-20 10:43
和运行方式有关系吧

试试下面方法之一

您好 十分感谢您的回答  但是两个方法都试过了  结果还是一样。没有输出文件且输出窗口不显示成功或者错误!

14

帖子

2

主题

0

精华

入门

F 币
79 元
贡献
39 点
地板
 楼主| 发表于 2018-4-22 08:56:15 | 显示全部楼层
fcode 发表于 2018-4-21 08:16
我没有修改任何代码,在我这里的屏幕输出为
   119.8400       119.8400
   112.8700       112.8700

您好,目前我在这个网盘链接下重装了软件  IMSL也重装了  现在还是黑色窗口一闪而过  不出结果!!  

14

帖子

2

主题

0

精华

入门

F 币
79 元
贡献
39 点
5#
 楼主| 发表于 2018-4-25 10:31:25 | 显示全部楼层
本帖最后由 wy123 于 2018-4-25 10:33 编辑
fcode 发表于 2018-4-24 10:58
单步调试一下,看运行到哪一步了。

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

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

调试

调试

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

结果

结果

14

帖子

2

主题

0

精华

入门

F 币
79 元
贡献
39 点
6#
 楼主| 发表于 2018-4-25 15:18:41 | 显示全部楼层
额,换成Debug,结果如下所示。

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

调试1

调试1

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

调试2

调试2

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

最后结果

最后结果

14

帖子

2

主题

0

精华

入门

F 币
79 元
贡献
39 点
7#
 楼主| 发表于 2018-4-25 16:25:08 | 显示全部楼层
本帖最后由 wy123 于 2018-4-25 16:58 编辑

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

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

就会直接跳出来。
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-5-8 02:15

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表