最近使用IMSL想求个定积分,发现之前用的imsl7.0不支持,会说明许可证已经过期,不得不自己申请一个许可。
首先是之前的blog:VS2022 Fortran 配置IMSL库
这次自己申请了一个学生许可证,大致需要学校邮箱,学生ID,导师邮箱等,网址为:https://www.imsl.com/student-licenses
大概等了三天左右,官方会回复到你的学生邮箱中,会发一个下载地址,附件为许可证。
进入网址后按着自己的需要下载,我就下载的是win平台的64位的imsl。
之后一定要把之前安装过的imsl卸载干净,然后去系统环境中把所有有关之前的配置路径都删干净,否则可能会出现错误。
安装好后,配置vs2022,一切都和上面的blog中的配置方法一样,注意最终的文件夹是不变的(lib,static,dll等),但是前面的路径肯定有所改变。
唯一区别:
把下载下来的许可证改名为imsl_eval,然后放到C:\Program Files (x86)\RogueWave\license即安装目录下的license文件夹中,之前7.0版本文件夹叫VNI现在已经改名为RogueWave了。下面贴上一个官方文档中求定积分的代码,测试没问题,自己配置好可以试试。
USE QDAGS_INTUSE UMACH_INTIMPLICIT NONEINTEGER NOUTREAL A, ABS, B, ERRABS, ERREST, ERROR, ERRREL, EXACT, F, &RESULTINTRINSIC ABSEXTERNAL F! Get output unit numberCALL UMACH (2, NOUT)! Set limits of integrationA = 0.0B = 1.0! Set error tolerancesERRABS = 0.0CALL QDAGS (F, A, B, RESULT, ERRABS=ERRABS, ERREST=ERREST)! Print resultsEXACT = -4.0ERROR = ABS(RESULT-EXACT)WRITE (NOUT,99999) RESULT, EXACT, ERREST, ERROR
99999 FORMAT (' Computed =', F8.3, 13X, ' Exact =', F8.3, /, /, &' Error estimate =', 1PE10.3, 6X, 'Error =', 1PE10.3)END!!REAL FUNCTION F (X)REAL XREAL ALOG, SQRTINTRINSIC ALOG, SQRTF = ALOG(X)/SQRT(X)RETURNEND