Fortran Coder

查看: 20637|回复: 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 点
5#
 楼主| 发表于 2018-5-18 09:21:08 | 只看该作者
吉大渣渣-固体 发表于 2018-5-17 22:12
对不起,本人已弃用IMSL;请查贵版本IMSL手册pdf中DNEQNF函数的说明。祝顺利

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

21

帖子

4

主题

0

精华

入门

F 币
87 元
贡献
50 点
6#
 楼主| 发表于 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 . . .

2022

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1600 元
贡献
689 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

7#
发表于 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 点
8#
发表于 2018-5-27 22:51:50 | 只看该作者
我也碰到同样的问题。

8

帖子

1

主题

0

精华

入门

F 币
39 元
贡献
11 点
9#
发表于 2018-5-27 22:52:11 | 只看该作者
我在用 compaq visual fortran 6.6

8

帖子

1

主题

0

精华

入门

F 币
39 元
贡献
11 点
10#
发表于 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)
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-11-27 07:57

Powered by Tencent X3.4

© 2013-2024 Tencent

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