Fortran Coder

查看: 834|回复: 19

[数学库] 用imsl求非线性方程组时运行出错,显示结果如下

[复制链接]

21

帖子

4

主题

0

精华

入门

F 币
87 元
贡献
50 点
发表于 2018-5-17 20:37:05 | 显示全部楼层 |阅读模式
*** TERMINAL ERROR 2 from DNEQNJ.  The required storage cannot be allocated.
***          The workspace requirement is based on N = 1077936128.
Press any key to continue . . .




请问大佬们这个是什么意思,解决方法是什么,谢谢!!

回复

使用道具 举报

27

帖子

0

主题

0

精华

熟手

F 币
212 元
贡献
101 点
发表于 2018-5-17 21:35:42 | 显示全部楼层
可能是静态数组开的太大,内存不足。建议根据实际情况数组下标范围改小点儿,或者换大内存电脑

21

帖子

4

主题

0

精华

入门

F 币
87 元
贡献
50 点
 楼主| 发表于 2018-5-17 21:49:02 | 显示全部楼层
吉大渣渣-固体 发表于 2018-5-17 21:35
可能是静态数组开的太大,内存不足。建议根据实际情况数组下标范围改小点儿,或者换大内存电脑 ...

谢谢回复!
数组不大,可能是我的代码有问题。下面是代码:
[Fortran] 纯文本查看 复制代码
program kakusann

Include 'link_fnl_shared.h'

USE NEQNJ_INT
USE UMACH_INT



implicit none


integer,parameter::n=2
integer::k,nout
real::x(n),xguess(n)
real::F(n),fnorm
real::lsjac(n,n)

F(1)=3*x(1)**3+2*x(1)
F(2)=4*x(2)**3+2*x(2)

lsjac(1,1)=9*x(1)**2+2
lsjac(1,2)=0.0
lsjac(2,1)=12*x(2)**2+2
lsjac(2,2)=0.0

xguess(1)=3.0
xguess(2)=3.0

call  umach(2,nout)
call    dNEQNJ (f,lsjac,x,xguess)

!WRITE (NOUT,99999) (X(K),K=1,N), FNORM
!99999 FORMAT ('  The solution to the system is', /, '  X = (', 3F5.1, &
!')', /, '  with FNORM =', F5.4, //)

end program

27

帖子

0

主题

0

精华

熟手

F 币
212 元
贡献
101 点
发表于 2018-5-17 22:12:32 | 显示全部楼层
Yowai 发表于 2018-5-17 21:49
谢谢回复!
数组不大,可能是我的代码有问题。下面是代码:

对不起,本人已弃用IMSL;请查贵版本IMSL手册pdf中DNEQNF函数的说明。祝顺利

21

帖子

4

主题

0

精华

入门

F 币
87 元
贡献
50 点
 楼主| 发表于 2018-5-18 09:21:08 | 显示全部楼层
吉大渣渣-固体 发表于 2018-5-17 22:12
对不起,本人已弃用IMSL;请查贵版本IMSL手册pdf中DNEQNF函数的说明。祝顺利

几乎是完全和手册例子一样,但就是老出现这个错误。

21

帖子

4

主题

0

精华

入门

F 币
87 元
贡献
50 点
 楼主| 发表于 2018-5-18 09:21:33 | 显示全部楼层
大佬们求助,实在看不出来这个问题在哪。代码如下:
[Fortran] 纯文本查看 复制代码
program kakusann

Include 'link_fnl_shared.h'
USE NEQNF_INT
USE UMACH_INT

implicit none
integer,parameter::n=2
real::F(n)
integer::k,nout
real::x(n),xguess(n)
real::fnorm


F(1)=55*x(1)**3+2*x(1)
F(2)=4*x(2)**3+2*x(2)

data xguess/3.0,3.0/

call    umach(2,nout)
CALL  NEQNF (F, X, xguess=xguess, fnorm=fnorm)

!WRITE (NOUT,99999) (X(K),K=1,N), FNORM
!99999 FORMAT ('  The solution to the system is', /, '  X = (', 3F5.1, &
!')', /, '  with FNORM =', F5.4, //)

end program


输出结果:
*** TERMINAL ERROR 2 from DNEQNJ.  The required storage cannot be allocated.
***          The workspace requirement is based on N = 1077936128.
Press any key to continue . . .

1323

帖子

12

主题

5

精华

论坛跑堂

Fcode跑堂伙计

F 币
222 元
贡献
261 点

新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

发表于 2018-5-18 17:28:05 | 显示全部楼层
第一个参数 f 应该是一个函数,而不是数组。
[Fortran] 纯文本查看 复制代码
program kakusann
  Include 'link_f90_static.h'
  USE NEQNF_INT
  USE UMACH_INT
  implicit none
  integer,parameter::n=2
  integer::nout
  real::x(n),xguess(n),fnorm
  external fcn
  xguess=3.0
  call umach(2,nout)
  CALL NEQNF (Fcn, X, xguess=xguess, fnorm=fnorm)
  WRITE (NOUT,*) x , FNORM
end program kakusann

SUBROUTINE FCN (X, F, N)
  INTEGER N
  REAL X(N), F(N)
  F(1)=55*x(1)**3+2*x(1)
  F(2)=4*x(2)**3+2*x(2)
END SUBROUTINE FCN


8

帖子

1

主题

0

精华

入门

F 币
39 元
贡献
11 点
发表于 2018-5-27 22:51:50 | 显示全部楼层
我也碰到同样的问题。

8

帖子

1

主题

0

精华

入门

F 币
39 元
贡献
11 点
发表于 2018-5-27 22:52:11 | 显示全部楼层
我在用 compaq visual fortran 6.6

8

帖子

1

主题

0

精华

入门

F 币
39 元
贡献
11 点
发表于 2018-5-27 22:52:33 | 显示全部楼层
Error: This is an actual argument keyword name, and not a dummy argument name.   [XGUESS]
call neqnf(fcn, x, XGUESS=xguess, FNORM=fnorm)
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

QQ|捐赠本站|Archiver|关于我们 About Us|群聊|Fcode

GMT+8, 2018-12-14 03:42

Powered by Discuz! X3.2

© 2001-2017 Comsenz Inc.

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