Fortran Coder

标题: 关于imsl的DNEQNJ函数求非线性方程组 [打印本页]

作者: Yowai    时间: 2018-5-31 11:30
标题: 关于imsl的DNEQNJ函数求非线性方程组
在使用这个函数的时候,我的方程组的个数需要主程序决定,而且随着计算的循环,个数在不断的增大,这个时候就需要传递除了文档中的(x,f,n)之外的另外数组,这个时候该怎么去传递数组去调用DNEQNJ?谢谢。


作者: fcode    时间: 2018-5-31 12:50
module或common,我记得三四天以前群里就给过你答案。
作者: Yowai    时间: 2018-5-31 13:29
fcode 发表于 2018-5-31 12:50
module或common,我记得三四天以前群里就给过你答案。

谢谢回复,您确实在群里回答过这个问题。我写了module,疑惑的是,我的subroutine写成【subroutine fcn(imax,mmax,P1,P2,X,F,N)】,而文档中的是【subroutine fun(X,F,N)】,在调用imsl函数库 【call  DN2QNJ (FCN, LSJAC, ERRREL, N, ITMAX, XGUESS, X, FNORM, FVEC, FJAC, R, QTF, WK)】的时候,括号中数组个数不同,能不能成功调用?
作者: Yowai    时间: 2018-5-31 16:03
fcode 发表于 2018-5-31 12:50
module或common,我记得三四天以前群里就给过你答案。


非常抱歉再次打扰您。我总是搞不清楚当把子程序当作参数传递时的用法。这是imsl文档中的内容,但是在例子主程序中并没有写【call fcn(x,f,n)】,【call lsjac(n,x,fjac)】,那么主程序中的【n】又是怎么传到子程序中的呢?如果我在主程序中写入【call fcn(imax,mmax,P1,P2,X,F,N)】,【call lsjac(imax,mmax,P1,P2,X,fjac,N)】,是不是就意味着可以将我想传入的【imax,mmax,P1,P2】传递到子程序中,并且在主程序中调用 【call  DN2QNJ (FCN, LSJAC, ERRREL, N, ITMAX, XGUESS, X, FNORM, FVEC, FJAC, R, QTF, WK)】,并对非线性方程组计算。
期待您的回复,谢谢。


作者: Yowai    时间: 2018-5-31 20:41
fcode 发表于 2018-5-31 12:50
module或common,我记得三四天以前群里就给过你答案。

谢谢。是我module数组传递没学好,所以之前一直解决不了。现在弄好了。




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2