① 關於fortran子程序的提問
1 bessel函數你可以直接調用IMSL的函數,詳見vni官網
http://www.vni.com/procts/imsl/documentation/fort06/sfun/NetHelp/default.htm
不用找開源。
2 legendre多項式常用的是前幾階。既然是多項式,只要知道其系數,在程序里定義成常量使用就可以了。系數在網上可以搜到。
② IVF+VS 的庫函數有msimsl嗎
通常來說,函數庫的主要內容是兩部分:include 和 lib ,使用函數庫的所有問題,都是讓編譯器正確的識別 include 和 lib。
在使用函數庫以前,到安裝目錄下了解一下函數庫的組成是很有必要的。(各函數庫的版本可能有差異,切記不可完全照這教科書來做,包括本文)
1. include 它告訴編譯器,我們使用到的這些函數是什麼,需要多少個參數,每個參數是什麼類型,返回什麼值。它的作用就像 Interface 介面一樣。它沒有函數內部如何實現的說明,只有介面!
對於 Fortran 函數庫,通常 include 里包含的都是 *.mod 文件,有些也包含 *.f90 文件(源代碼方式聲明介面)。
2. lib 鏈接器在鏈接成最終可執行文件時,需要把 lib 中的函數庫一起鏈接。它是函數內部的實現,是函數的實際作用體,也是可執行代碼。
舉一個生活中的 include 和 lib 的例子:
比如你買了一個工具箱(函數庫),你需要翻閱它的目錄(include )來了解這裡面哪個工具可以做什麼,哪些工具需要電源,電源是否是220V?哪些工具需要加水?這些工具各自的作用是什麼?(函數的輸入輸出)。
當你需要實際使用到某個工具時,你才會去尋找真正的它(lib),並把它拿到自己身邊來(鏈接)。
除了這兩個重要的組成部分之外,一些函數庫還會有:
3. examples 或 test / code / demo 一類的,用於示範函數庫的使用(但是它沒法示範如何操作,如何設置編譯環境)
4. document 或 doc / help ,這是函數庫的說明書。裡面的 how to us 章節也對它的使用有指導作用。
5. bin ,個別函數庫具有一些可執行的工具,通常存放在這里。
6. src ,開源函數庫通常會有源代碼,存放在這里。(IMSL 和 MKL 均不開源).
③ 安裝了MPI,可是Fortran仍然不能識別use mpi
個人經驗啊,你要確定一下你的編譯器的設置是否包含mpi的頭文件目錄,
options/directories 有沒有你安裝的mpi目錄
.../mpich/sdk/include
.../mpich/sdk/lib
而且在你的工程裡面要有
ws2_32.lib和mpich.lib這兩個庫
我沒用過windows下的mpi啊,個人覺得還是在linux下比較好。
④ [求助]fortran如何進行二維插值
你說的 應該屬於平滑問題 在f里不好弄 1維好說 你說的是2維 3次樣條是最好的 不過 你可以用 matlab 其中裡面的庫函數interp2()中的spline參數就可以很好的完成你的要求 但是我現在對於interp2的源碼還沒有,所以對於他是怎麼平滑的還是不清楚 希望可以幫上你
⑤ pgi visal fortran 怎麼使用IMSL庫
如果要用IMSL,那必須使用獨立安裝版本的IMSL。因為兩個都可以綁定到VS,所以應該可以使用的:)
⑥ 用Fortran編寫程序輸出的數據一般用什麼程序作圖比較好
現在64位的計算機已經越來越普遍了,Intel公司的CORE處理器也從酷睿雙核升級為i3、i5直到現在的主流i7,微軟的Windows 7系列的64位系統用起來感覺也挺不錯的。但正是這64位,最近給我但來了些許的糾結。本文結合今天自己學習Intel Visual Fortran(以下簡稱IVF)的內容,分析了IVF的優勢、相關軟體的安裝要求、從Compa Visual Fortran(以下簡稱CVF)向IVF的轉換以及IVF下簡單Fortran計算程序的編譯執行的操作過程,以期能對碰到類似情況者提供點思路。
IVF較之CVF優勢:
我的戴爾Inspiron系列機子是64位,Windows 7系統也是64位的。在我的碩士研究生階段學習中需要用到Fortran程序設計語言,以前我習慣使用CVF來編寫、調試和運行Fortran程序,但現在看來不行了。CVF不支持64位,因為2005年以前Fortran 90/95 的Win32 開發環境多採用Compaq Visual Fortran 6.x,但在2005年CVF 開發團隊加盟到Intel 公司,HP 宣布其CVF6.6 截至2005年12月31日,IVF9.0 將作為其新一代後繼編譯器。
IVF是在CVF的基礎上開發的Fortran編譯器,它將CVF 前端與英特爾處理器後端相結合,擁有CVF 豐富的語言功能和英特爾處理器的代碼生成及優化功能,使運行在英特爾平台上的程序能得到大幅度提高。而且隨著計算規模的增大,對計算內存的要求必須採用64位的程序才能夠滿足我們的要求,但CVF沒有提供64位系統的編譯平台。另外程序並行功能的實現可以用Intel的MKL所提供的函數庫,這些函數庫採用了共享內存並行計算的OpenMP,但以前的CVF沒有提供對OpenMP的支持,所以無法調用MKL的並行函數庫。所以,從CVF6.x轉移到IVF9.0已是勢在必行,選用IVF來Fortran編譯程序也是很有必要的。
IVF相關軟體的安裝說明:
在使用CVF6.5/6.6編寫運行Fortran程序時,只需要安裝Compaq Visual Fortran6.5/6.6即可。這是因為在這個安裝源程序中,Visual Fortran已經被組合(集成)在Microsoft Visual Studio(以下簡稱VS)的圖形介面開發環境中了,所以可以直接安裝使用。這與VC/VC++類似,故用戶看到的CVF程序編寫界面與VC/VC++的基本是一致的。
而採用IVF來編寫運行Fortran程序則稍微麻煩些。網上下載到的Intel Visual Fortran Compiler10/11版本都只是編譯器,它需要放到集成開發環境(Integrated Development Environment,以下簡稱IDE)中去才能使用。故而IVF Complier還需要VS6.6以上版本的IDE的支持,所以必須事先安裝好VS後,才能安裝編譯器。我就是在安裝VS2005後再安裝IVF10的。具體安裝方法參見本文後的鏈接部分說明。
IVF與CVF的兼容性:
IVF 編譯器支持所有的CVF 語法,包括Digital Equipment Corporation(DEC) Fortran和Microsoft Fortran PowerStation 4.0 的語言擴展;支持所有的CVF庫常式,包括可移植庫,QuickWin以及所有的系統介面模塊。
IVF 不支持的CVF特徵有:
(1)Compaq Extended Math Library(CXML)。可以使用Intel Math Kernel Library 或IMSL、NAG 等第三方數學庫來替換。
(2)跨引用的源代碼瀏覽器。
(3)COM伺服器向導。假如要轉換由CVF的COM伺服器向導創建的組件工程,需要在IV下重新構建;假如要調整組件介面,比如增加新的介面,則需要在CVF下進行。
從CVF向IVF的轉換:
由CVF 轉換到IVF,所有的Fortran源文件都需要在IVF下重新編譯。IVF編譯器不能直接使用CVF編譯的對象、模塊和靜態鏈接庫;但只要不在兩個環境下共享輸入/輸出單元,IVF編譯的應用程序可以使用CVF 建造的動態鏈接庫。
大多數情況下無須改變Fortran源文件,只在IVF下重新建造現存的CVF工程即可;但有些工程需要改變小量源代碼,有些則需要對建造方法做出適當調整。
IVF編譯器提供有工程轉換向導,以方便CVF向IVF的轉換。轉換可以分兩步進行:
(1)打開CVF項目空間。可以直接雙擊CVF項目空間(*.dsw)打開之(如圖1所示文件)。
圖1
在隨後出現消息框,如圖2,點擊「全是」按鈕,將CVF 項目空間下的每一項工程轉換為IVF 解決方案下對應的Visual C++.NET 工程。
⑦ Fortran如何實現文件操作的OPEN/CLOSE/READ/WRITE文件操作命令功能用法。
FORTRAN簡介
FORTRAN是英文「FORmula TRANslator」的縮寫,譯為「公式翻譯器」,它是世界上最早出現的計算機高級程序設計語言,廣泛應用於科學和工程計算領域。FORTRAN語言以其特有的功能在數值、科學和工程計算領域發揮著重要作用。
FORTRAN開發歷史
早在1951年,美國IBM公司約翰·貝克斯(John Backus)針對匯編語言的缺點著手研究開發FORTRAN語言,並於1954年在紐約正式對外發布。稱約翰·貝克斯提出的FORTRAN語言為FORTRANⅠ,FORTRANⅠ雖然功能簡單,但它的開創性工作,在社會上引起了極大的反響。到1957年第一個FORTRAN編譯器在IBM704計算機上實現,並首次成功運行了FORTRAN程序。
在1958年,對FORTRANⅠ進行了擴充和完善,引進了子函數等概念,推出了商業化的FORTRANⅡ版本。之後,FORTRAN語言發展迅速,多種版本相繼在其它計算機上實現。
在1962年,推出了FORTRAN Ⅳ。FORTRAN Ⅳ沒有充分考慮兼容性,導致FORTRANⅡ程序不能在FORTRAN Ⅳ系統中運行,使其應用受到了很大限制,這時語言不兼容性問題和影響被突出表現出來。此前也出現過FORTRAN Ⅲ,但由於存在嚴重缺陷,沒有在計算機上實現。
隨著FORTRAN語言版本的不斷更新和變化,語言不兼容性問題日益突出,語言標准化工作被提上了日程。1962年5月,美國標准化協會(簡稱ANSI)成立相關機構著手進行FORTRAN語言標准化的研究工作,並於1966年正式公布了兩個標准文本:美國國家標准FORTRAN(ANSI X3.9-1966)和美國國家標准基本FORTRAN(ANSI X3.10-1966),前者相當於FORTRAN Ⅳ,後者相當於FORTRANⅡ。基本FORTRAN是美國國家標准FORTRAN的一個子集,從而實現了語言的向下兼容,初步解決了語言的兼容性問題。通常稱美國國家標准FORTRAN為FORTRAN 66。FORTRAN 66的推出在國際上產生了廣泛影響,1972年國際標准化組織(簡稱ISO)在FORTRAN 66基礎上制定了FORTRAN語言三級國際標准:基本級、中間級和完全級。
20世紀60代末,結構化程序設計方法提出後,具有結構化特徵的程序設計語言開始出現,如:ALGOL、PASCAL、MODULA、C等。如何將結構化特徵引入FORTRAN 66引起計算機廠商和研究機構的高度重視,許多計算機廠商開始對FORTRAN 66進行不同程度的擴充,引入了結構化特徵。針對這種情況,ANSI於1976年對FORTRAN 66(ANSI X3.9-1966)進行了修訂,吸收了計算機廠商所擴充的一些行之有效的功能,同時增加了許多新內容。ANSI於1978年4月正式公布了新的美國國家標准(程序設計語言FORTRAN ANSI X3.9-1978),同時宣布撤消ANSI FORTRAN 3.9-1966,通常稱新標准為FORTRAN 77(該版本原計劃1977年公布)。FORTRAN 77向下兼容FORTRAN 66。在1980年,FORTRAN 77被ISO正式確定為國際標准ISO 1539-1980,該標准分全集和子集。FORTRAN 77推出後,由於具有結構化特徵,在社會上得到了廣泛應用,同時由於擴充了字元處理功能,在非數值處理領域也能大顯身手。
20世紀80年代末,FORTRAN 77結構化和現代化的研究開始興起,到1991年5月,ANSI公布了新的美國國家標准FORTRAN(ANSI 3.198-1991)。之後,ISO採納該標准,並確定為國際標准ISO/IEC 1539-1:1991,新國際標准還採納了我國計算機和信息處理標准化技術委員會程序設計分會提出的多位元組字元集數據類型及相應的內部函數,為非英語國家使用計算機提供了極大的方便。通常稱新標准為FORTRAN 90,FORTRAN 90向下兼容FORTRAN 77。之後不久又出現了FORTRAN 95。
FORTRAN 90的推出,使傳統FORTRAN語言具有了現代氣息。Fortran 2003 的規則已經由ISO組織制定發布。
Windows平台下,微軟公司將FORTRAN 90無縫集成在Developer Studio集成開發環境之中,推出了Microsoft FORTRAN PowerStation 4.0,使FORTRAN 90真正實現了可視化編程,徹底告別了傳統DOS環境(字元界面),轉到了現代Windows環境(視窗界面),共享微軟公司Windows平台的豐富資源。
在1997年3月,微軟公司和數據設備公司(Digital Equipment Corp,簡稱DEC)強強聯合,合作研究、開發和推出了功能更強的FORTRAN語言新版本:
Digital Visual FORTRAN 5.0,它是Microsoft FORTRAN PowerStation 4.0的升級換代產品。DEC公司在高性能科學和工程計算方面擁有世界領先技術,其高質量的FORTRAN編譯器遍及全球。1998年1月,DEC與Compag公司合並,DEC成為Compag公司的全資子公司,於是Digital Visual FORTRAN更名為Compag Visual FORTRAN,其最新版本為Compag Visual FORTRAN 6.6。Compaq和HP合並之後,Compaq的Fortran小組和Intel的Fortran開發小組合並,開發出來Intel Fotran編譯器9,有linux和window2個版本,其windows版本為Intel Visual Fortran, 可以和微軟的Visual Studio.net集成。Windows平台下還有PGI,Absoft,Intel等多個商業公司的Fortran編譯器,還有大量小公司的免費Fortran編譯器。
openMPI使Fortran等語言可以容易且免費的實現並行計算。
Linux平台下,其gcc編譯器默認支持fortran,另外有Intel,Sun Studio,openMPI,Photran等共享編譯器和PGI,Absoft,lachy, IBM,SGI,HP等多個版本的商業編譯器。
支持Fortran 2003標準的編譯器行將推出,新版本的Sun Studio 編譯器已經支持部分 Fortran 2003 語法。
Fortran的特性
Fortran語言的最大特性是接近數學公式的自然描述,在計算機里具有很高的執行效率。
易學,語法嚴謹。
可以直接對矩陣和復數進行運算,這一點類似matlab。
自誕生以來廣泛地應用於數值計算領域,積累了大量高效而可靠的源程序。
很多專用的大型數值運算計算機針對Fortran做了優化。
廣泛地應用於並行計算和高性能計算領域。
Fortran90,Fortran95,Fortran2003的相繼推出使Fortran語言具備了現代高級編程語言的一些特性。
Fortran語言的Hello World程序
下面是一個在標准輸出設備上輸出Hello World的簡單程序,這種程序通常作為開始學習編程語言時的第一個程序:
WRITE(*,10)
10 FORMAT('Hello, world!')
STOP
END
Fortran編譯器
Windows操作系統下:
Fortran Power Station 4.0 (FPS 4.0),微軟公司開發的Fortran編譯器。1997年3月轉讓給DEC公司。
Digital Visual Fortran (DVF),Fortran Power Station的DEC公司版本。
Compaq Visual Fortran (CVF),1998年1月,DEC公司被康柏公司收購,Digital Visual Fortran更名為Compaq Visual Fortran。一個著名的版本是Compaq Visual Fortran 6.5。目前康柏公司已並入惠普公司。Compaq Visual Fortran的最新版是6.6。
Intel Fortran,英特爾公司的開發的Fortran編譯器。
Lahey Fortran
Absoft Fortran
OpenWatcom
Linux操作系統下:
PGI Fortran
G77,GNU的Fortran77編譯器,集成在GCC中。
GFORTRAN,GNU的最新的Fortran編譯器,集成在GCC 4.0中,目的是支持Fortran95和一部分Fortran2003的功能,以替代G77。
Intel Fortran
Absoft Fortran
g95,跟GFORTRAN同為開放源代碼的Fortran95編譯器。
Fortran程序包
幾個著名的Fortran程序包:
IMSL--國際數學和統計鏈接庫
BLAS--Basic Linear Algebra Subroutines
LAPACK--Linear Algebra PACKage
FORTRAN90是ISO(國際標准化組織)於1991年推出的最新標准,我國國家標準是GB/T 3057-1996.除了保持FORTRAN77的全部優點之外,又 增加了許多具有現代特性的功能,使他成為具有良好的結構特性,鮮明的時代特性的程序設計語言.程序設計是計算機基礎教育的基礎與重點,高級語言程序設計課是繼微機應用基礎之後的一門必修的基礎課,目的是向學生介紹程序設計的基礎知識,使學生掌握高級語言程序設計的基本方法,具有應用計算機的初步能力,並培養學生掌握用計算機處理問題的思維方法。通過該課程的學習,要求學生了解FORTRAN語言的特點,基本成份及使用方法,具有閱讀程序和初步編程的能力。進行演算法的初步訓練,掌握最基本演算法的設計和實現方法。掌握結構化程序設計方法,能設計出良好風格的程序。具有調試程序的基本能力。
Fortran的將來
Fortran語言是一種極具發展潛力的語言,在全球范圍內流行過程中,Fortran語言的標准化不斷吸收現代化編程語言的新特性,並且在工程計算領域仍然佔有重要地位。
不可否認,Fortran語言與目前流行的JAVA,C#等高級語言相比,它缺乏創造力。但是,工科學生必須注意到,由於Fortran在工程計算領域長期處於統治地位,很多優秀的工程計算軟體都是運用fortran語言編寫,例如ANSYS,Marc,為了能夠使用這些商業軟體的高級功能,必須先學會fortran語言,才能編寫應用程序介面。
在數值計算中,Fortran語言仍然不可替代。Fortran90標准引入了數組計算等非常利於矩陣運算的功能。在數組運算時,Fortran能夠自動進行並行運算,這是很多編程語言不具備的。運用fortran語言,你能夠運用很多現成的函數軟體包,所以非常便利。(目前流行的Matlab的早期版本,主要就是為兩個著名的Fortran函數包提供程序介面)