Yowai 发表于 2018-5-17 20:37:05

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

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



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

吉大渣渣-固体 发表于 2018-5-17 21:35:42

可能是静态数组开的太大,内存不足。建议根据实际情况数组下标范围改小点儿,或者换大内存电脑

Yowai 发表于 2018-5-17 21:49:02

吉大渣渣-固体 发表于 2018-5-17 21:35
可能是静态数组开的太大,内存不足。建议根据实际情况数组下标范围改小点儿,或者换大内存电脑 ...
谢谢回复!
数组不大,可能是我的代码有问题。下面是代码:

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

callumach(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

吉大渣渣-固体 发表于 2018-5-17 22:12:32

Yowai 发表于 2018-5-17 21:49
谢谢回复!
数组不大,可能是我的代码有问题。下面是代码:



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

Yowai 发表于 2018-5-18 09:21:08

吉大渣渣-固体 发表于 2018-5-17 22:12
对不起,本人已弃用IMSL;请查贵版本IMSL手册pdf中DNEQNF函数的说明。祝顺利

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

Yowai 发表于 2018-5-18 09:21:33

大佬们求助,实在看不出来这个问题在哪。代码如下:

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)
CALLNEQNF (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 . . .

fcode 发表于 2018-5-18 17:28:05

第一个参数 f 应该是一个函数,而不是数组。
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

sit2018 发表于 2018-5-27 22:51:50

我也碰到同样的问题。

sit2018 发表于 2018-5-27 22:52:11

我在用 compaq visual fortran 6.6

sit2018 发表于 2018-5-27 22:52:33

Error: This is an actual argument keyword name, and not a dummy argument name.   
call neqnf(fcn, x, XGUESS=xguess, FNORM=fnorm)
页: [1] 2 3
查看完整版本: 用imsl求非线性方程组时运行出错,显示结果如下