理工科應該的知道的C/C++數學計算庫(轉)
作為理工科學生,想必有限元分析、數值計算、三維建模、信號處理、性能分析、仿真分析。。。這些或多或少與我們常用的軟件息息相關,假如有一天你只需要這些大型軟件系統的某一個很有限的功能,你是不是也要因此再用一用那動輒幾個g的軟件呢?其實我覺得如果系統不是很大,不是很復雜,我們個人完全有可能自己去編寫代碼來實現這些‘’有限的功能‘’。別以為這是件很困難的事情,我總以為大學期間學的c語言是極其有用的,只要你會基本的c語言語法,你就可以的。
下面我來介紹幾個非常有益的c/c++數學計算庫,他們基本上都是開源的,你完全不必擔心版權問題,他們都是一些自由軟件,你要做的僅僅是仔細閱讀他們的授權協議確保不要濫用就可以了:
計算幾何算法庫 CGAL
CGAL ,計算幾何算法庫,是一個大型C + +庫的幾何數據結構和算法,如Delaunay三角網,網格生成,布爾運算的多邊形,以及各種幾何處理算法。 CGAL是用來在各個領域:計算機圖形學,科學可視化,計算機輔助設計與建模,地理信息系統,分子生物學,醫學影像學,機器人學和運動規划,和數值方法。
下載網址 http://www.cgal.org/download.html
數學軟件包 Octave
Octave 是一個類似matlab和Scilab的數學軟件包,可以進行各種運算,編程。它還有豐富的C++接口可以讓用戶編程時調用。它繪圖使用gnuplot。
Octave的使用也是基於字符終端模式的,當需要繪圖時,將會調用Gnuplot進行數據繪圖,並顯示出來。
Octave是用C++編寫的,它內容豐富的庫也可以供用戶在編寫軟件時調用。Octave庫的詳細介紹在/usr/share/doc/octave-2.1.50/liboctave下,文件是liboctave.dvi,需要PDF文件的,可以運行:
dvipdfm liboctave.dvi
將dvi文件轉換為PDF文件。
Octave同時還支持Fortran等的調用,GSL綁定等。可以由用戶定制自己的函數、子程序等。
下載地址 http://octave.sourceforge.net/packages.html
C++ 數學計算庫 TooN
TooN 是一個C++ 數學計算庫,其目的是有效運作的大量小型矩陣,並提供方便一些算法包括矩陣分解和優化。
下載地址http://mi.eng.cam.ac.uk/~er258/cvd/toon/html-user/index.html
有限元分析軟件 OpenFEM
有限元分析,即使用有限元方法來分析靜態或動態的物體或系統。在這種方法中一個物體或系統被分解為由多個相互聯結的、簡單、獨立的點組成的幾何模型。在這 種方法中這些獨立的點的數量是有限的,因此被稱為有限元。由實際的物理模型中推導出來得平衡方程式被使用到每個點上,由此產生了一個方程組。這個方程組可 以用線性代數的方法來求解。有限元分析的精確度無法無限提高。元的數目到達一定高度后解的精確度不再提高,只有計算時間不斷提高。
下載地址 http://sourceforge.net/projects/openfem/files/
有限元計算框架 OOFEM
OOFEM 是一個開源多物理並行有限元程序的面向對象的架構。這個項目的目的是提供高效率和強大的有限元計算工具,以及提供高度模塊化和可擴展性的發展環境。有限元分析通常借助計算機軟件完成,著名工程軟件有:MSC.Nastran、ADINA、LS-DYNA、ANSYS、ABAQUS、2D-sigma等。
下載地址 http://www.oofem.org/en/download/download.html
C++符號計算庫 GiNaC
GiNaC(GiNaC 不是一個 CAS 計算機代數系統))是一個用於符號計算的C++庫。它的設計允許集成系統創造,象征性的操作嵌入與更成熟的計算機科學(如計算密集型,圖形界面等),數字應用領域。相對於其他情況下,它不會嘗試代數提供廣泛的功能和簡單的編程語言,而是接受一個給定語言(C + +)和擴展了代數功能設置。
下載地址 http://www.ginac.de/Download.html
類C的數學專用語言EngLab
EngLab是一個類C的數學專用語言。它語法簡單,關鍵字很少,工程師和那些只會少許編程知識的人便能很好的掌握。
下載地址http://sourceforge.net/projects/englab/files/
C++信號處理庫 SP++
TSPL(Template Signal Processing Library) 是一個 C++ 的信號處理庫,主要包括濾波器設計、時頻分析和小波變換,同時還包含一些關於向量和矩陣的基本算法,所有的算法基於 C++ 模板類編寫而成。
下載地址http://code.google.com/p/tspl/downloads/list
偏微分方程求解工具箱 DUNE(目前還不支持windows系統)
DUNE (Distributed and Unified Numerics Environment),分布和統一數值解環境,是一種求解偏微分方程的基於網格的方法(PDE)的模塊化的工具箱。DUNE是所有這些體現了科學計算的概念從抽象的接口設置第一次。現代C + +編程技術使同樣的概念非常不同的實現使用一個非常低的開銷一個共同的接口。因此,DUNE確保在科學計算的效率,並支持高性能計算應用。
下載地址http://www.dune-project.org/download.html
人工智能應用框架 Into
Into 是一個用 C++ 開發的跨平台的機器智能應用框架。Into 提供一種不同於其他的、快速的方法用以構建高性能圖像分析、機器視覺效果、模式識別和人工智能應用。分層的 API 一起超過 20 個完全可互操作的插入式模塊用來訪問圖像和各種數據源等。
下載地址http://intopii.com/into/
高性能計算軟件工具包 DAKOTA
DAKOTA (Design Analysis Kit for Optimization and Terascale Applications) 是一種用於執行系統的分析和高性能計算機的設計通用軟件工具包。它提供了設計優化,不確定性量化,參數估計,實驗設計,靈敏度分析,以及連接服務的計算和模擬的並行算法范圍。
下載地址http://www.cs.sandia.gov/DAKOTA/download.html
線性算術的C++模板庫 Eigen
Eigen 是一個線性算術的C++模板庫,包括:vectors, matrices, 以及相關算法。功能強大、快速、優雅以及支持多平台。
下載地址 http://bitbucket.org/eigen/eigen/downloads/
多精度整數和有理數 MPIR
MPIR 是一個開源的多精度的整數和有理數計算庫,基於 GMP 庫開發。
下載地址http://www.mpir.org/mpir-1.3.1.tar.gz
C/C++數值計算庫 mygsl
mygsl是一個基於GSL庫的個性化開源數值計算項目.
該類庫提供了關於數學計算的很多方面,包括:Complex Numbers Roots of Polynomials
Special Functions Vectors and Matrices
Permutations Sorting
BLAS Support Linear Algebra
Eigensystems Fast Fourier Transforms
Quadrature Random Numbers
Quasi-Random Sequences Random Distributions
Statistics Histograms
N-Tuples Monte Carlo Integration
Simulated Annealing Differential Equations
Interpolation Numerical Differentiation
Chebyshev Approximation Series Acceleration
Discrete Hankel Transforms Root-Finding
Minimization Least-Squares Fitting
Physical Constants IEEE Floating-Point
Discrete Wavelet Transforms Basis splines
下載地址http://u.115.com/file/f572d894a0
差不多我所知道的就這些了,其實本文主要參考的是開源中國社區公布的一些項目,我所做的僅僅是整理一下呈現給大家,希望對大家在以后的學習、工作有所幫助。在內心深處里,我其實很想某一天用着比較牛逼的這方面的國產軟件,只是不知道會在什么時候。不想帶着一種用盜版xp 、office,盜版ug,盜版ansys,盜版GT,盜版AMESim,盜版matlab。。。原來我電腦里裝的全是盜版,有時候覺得這是一種多么可笑的事情,可是又沒有什么辦法。也許,從這一刻開始,我們帶着一種新的理念,多少年后這種情況會得到改觀。
話又說多了···