IMSL 7.0 安裝與使用
本篇主要介紹windows下IMSL7.0的安裝,以及配合VS+IVF的使用(vs2013+ivf2013)。
IMSL簡介
是一個函式庫集合,通過對其的呼叫,簡化數值計算程式的編寫。
IMSL安裝
1. 首先下載IMSL7.0,包含32與64位
2. 雙擊 最後一級目錄 下的setup.exe安裝
(別的貌似也打不開)
註冊碼填 201111;
license檔案我從網上下了一個,貌似用不到;
我選擇的是_nocuda那個資料夾下的,32位和64位的安裝都沒有問題。(不知道帶不帶_nocuda有什麼區別,誰知道的說一聲)。
3. windows環境變數設定
上一步安裝完成後,環境變數應該自己已經設定好了,不過也可以自己檢查一下。
在這裡
INCLUDE和LIB
ps.這個貌似配合VS+IVF使用時不需要,但是其他編譯器可能需要,所以最好一併設定了。
VS設定
1. INCLUDE 和LIB 設定
VS選單欄,工具(T) => 選項(O),設定如下圖
win32對應 $你的安裝根目錄\VNI\imsl\fnl700\winin111i32
win64對應 $你的安裝根目錄\VNI\imsl\fnl700\winin111e64
分別在上圖Includes和Libraries中新增,IMSL的include和lib的路徑,如下圖
對應的,再填上win64位的就好了。
ps:注意這裡C:\前不需要$。
2. 程式測試
這裡摘取IMSL手冊中第一個求解線性方程組的例子進行測試。
include 'link_fnl_shared.h'
use lin_sol_gen_int
use rand_gen_int
use error_option_packet
implicit none
! This is Example 1 for LIN_SOL_GEN.
integer, parameter :: n=32
real(kind(1e0)), parameter :: one=1e0
real(kind(1e0 )) err
real(kind(1e0)) A(n,n), b(n,n), x(n,n), res(n,n), y(n**2)
! Generate a random matrix.
call rand_gen(y)
A = reshape(y,(/n,n/))
! Generate random right-hand sides.
call rand_gen(y)
b = reshape(y,(/n,n/))
! Compute the solution matrix of Ax=b.
call lin_sol_gen(A, b, x)
! Check the results for small residuals.
res = b - matmul(A,x)
err = maxval(abs(res))/sum(abs(A)+abs(b))
if (err <= sqrt(epsilon(one))) then
write (*,*) 'Example 1 for LIN_SOL_GEN is correct.'
end if
end
總結
IMSL下載困難,到處都找不到;
前面安裝配置簡單,最後測試時從網上的一些教程直接拷貝測試程式碼,但是那些程式碼多比較老舊,可能無法執行,這時配置其實沒有問題。比如,use IMSL在7.0是編譯不過的,需要換成use numerical_libraries;
從手冊中拷貝的程式碼編譯通過,執行出錯,提示“LNK2019:無法解析的外部符號……”,這裡不是配置問題,而是缺少 include ‘link_fnl_shared.h’ ,補上就好。新增之後還出錯,那可能真的是lib配置出了問題,重新查詢吧;
不行的時候,重啟一下試試。