Fortran Coder

查看: 1764|回复: 2
打印 上一主题 下一主题

[数学库] 求助,关于imsl5.0函数使用

[复制链接]

5

帖子

2

主题

0

精华

入门

F 币
46 元
贡献
22 点
跳转到指定楼层
楼主
发表于 2023-7-7 18:56:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
想用imsl解非线性方程组的方法求计算程序的解(就是逐步逼近),用的imsl里的是zreal函数,但是这个函数非要用external,外部函数,我这整套程序都是在算这个结果,总不至于全部都放外边,求大神支招。
分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

5

帖子

2

主题

0

精华

入门

F 币
46 元
贡献
22 点
沙发
 楼主| 发表于 2023-7-7 20:16:00 | 只看该作者
[Fortran] 纯文本查看 复制代码
01program main
02include 'link_f90_static.h'
03use test
04 
05use numerical_libraries
06 
07call ttt
08 
09 
10pause
11end program
12 
13 
14 
15module test
16include 'link_f90_static.h'
17use numerical_libraries
18contains
19 
20real function f(x)  !样例,实际主计算程序比这个多的多
21  implicit none
22  real x
23  f=X**2+5*X+3
24!  write(*,*)x,f
25  return
26end function
27 
28 
29subroutine ttt
30  implicit none
31  integer, parameter :: ITMAX = 100   !最大计算次数
32  integer, parameter :: NROOT = 1     !初始值数量
33  real, parameter :: EPS = 1.0E-6     !定义两个解之间最短距离,任何两个解的差值一定不小于EPS,ABS(Xi-Xj)>=eps
34  real, parameter :: ERRABS = 1.0E-6  !当ABS(F(Xi))<ERRABS时,就视Xi为F(Xi)的解
35  real, parameter :: ERRREL = 1.0E-6  !当新Xi和就Xi值,很接近时,就视Xi为解,不再做新的逼近
36  real, parameter :: ETA =0.01 !0.0005 !求解步长
37  integer INFO(NROOT)
38  real,external :: f
39  real :: X(NROOT)     !答案
40  real :: XGUESS(NROOT) =0 !(/ -1.0000, 1.0000/)
41   
42  call ZREAL (f, ERRABS, ERRREL, EPS, ETA, &
43              NROOT, ITMAX, XGUESS, X, INFO)
44  write(*,*) X !,f(X)
45 
46end subroutine
47 
48end module

5

帖子

2

主题

0

精华

入门

F 币
46 元
贡献
22 点
板凳
 楼主| 发表于 2023-7-8 16:13:53 | 只看该作者
该问题已解决
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2025-3-14 07:59

Powered by Discuz! X3.4

© 2013-2025 Comsenz Inc.

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