1. 程式人生 > >常見的C++數學計算庫

常見的C++數學計算庫

來源: https://blog.csdn.net/panhao762/article/details/55276811

作為理工科學生,想必有限元分析、數值計算、三維建模、訊號處理、效能分析、模擬分析。。。這些或多或少與我們常用的軟體息息相關,假如有一天你只需要這些大型軟體系統的某一個很有限的功能,你是不是也要因此再用一用那動輒幾個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 
差不多我所知道的就這些了,其實本文主要參考的是開源中國社群公佈的一些專案,我所做的僅僅是整理一下呈現給大家,希望對大家在以後的學習、工作有所幫助。在內心深處裡,我其實很想某一天用著比較牛逼的這方面的國產軟體,只是不知道會在什麼時候。