1. 程式人生 > >開源數學計算庫

開源數學計算庫

有限元分析、數值計算、三維建模、訊號處理、效能分析、模擬分析。。。這些或多或少與我們常用的軟體息息相關,假如有一天你只需要這些大型軟體系統的某一個很有限的功能,你是不是也要因此再用一用那動輒幾個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 MatricesPermutations    Sorting BLAS Support    Linear Algebra Eigensystems    Fast Fourier TransformsQuadrature    Random Numbers Quasi-Random Sequences    Random Distributions Statistics    HistogramsN-Tuples    Monte Carlo Integration Simulated Annealing    Differential Equations Interpolation    Numerical Differentiation Chebyshev Approximation    Series Acceleration Discrete Hankel Transforms    Root-FindingMinimization    Least-Squares Fitting Physical Constants    IEEE Floating-Point Discrete Wavelet Transforms    Basis splines

MATLAB是美國MathWorks公司出品的商業數學軟體,用於演算法開發、資料視覺化、資料分析以及數值計算的高階技術計算語言和互動式環境,主要包括MATLAB和Simulink兩大部分。

相關推薦

開源數學計算

有限元分析、數值計算、三維建模、訊號處理、效能分析、模擬分析。。。這些或多或少與我們常用的軟體息息相關,假如有一天你只需要這些大型軟體系統的某一個很有限的功能,你是不是也要因此再用一用那動輒幾個g的軟體呢?其實我覺得如果系統不是很大,不是很複雜,我們個人完全有可能自己去編

常見的C++數學計算

來源: https://blog.csdn.net/panhao762/article/details/55276811 作為理工科學生,想必有限元分析、數值計算、三維建模、訊號處理、效能分析、模擬分析。。。這些或多或少與我們常用的軟體息息相關,假如有一天你只需要這些大型軟體系統的某一個很有限的功

C++數學計算與軟體

A flexible programming library for evolutionary computation. Steady-state, generational and island model genetic algorithms are supported, using Darw

幾個開源幾何計算數學

幾個開源幾何計算數學庫 簡單介紹幾個計算幾何的資源 a) Geos Geos的全稱就是Geometry Engine Open Source,參考網站就是:http://geos.refractions.net,從名稱就可以看出,Geos就是判斷幾何體的過程。 Geos是用C++語言

【原創】開源Math.NET基礎數學使用(02)矩陣向量計算

前言   本文開始一一介紹Math.NET的幾個主要子專案的相關功能的使用。今天先要介紹的是最基本Math.NET Numerics的最基本矩陣與向量計算。 1.建立Numerics矩陣與向量   矩陣與向量計算是數學計算的核心,因此也是Math.NET Numerics的核心和基礎。  

【原創】開源Math.NET基礎數學使用(16)C#計算矩陣秩

  上個月對Math.NET的基本使用進行了介紹,主要內容有矩陣,向量的相關操作,解析資料格式,數值積分,資料統計,相關函式,求解線性方程組以及隨機數發生器的相關內容。這個月接著深入發掘Math.NET的各種功能,並對原始碼進行分析,使得大家可以儘可能的使用Math.NET在.NET平臺下輕易的開發數學計

【原創】開源Math.NET基礎數學使用(11)C#計算相關係數

/// <summary>2個數據集的相關度計算類</summary> public static class Correlation { /// <summary>計算皮爾遜積差相關係數</summary> /// <para

【原創】開源Math.NET基礎數學使用(15)C#計算矩陣行列式

  上個月對Math.NET的基本使用進行了介紹,主要內容有矩陣,向量的相關操作,解析資料格式,數值積分,資料統計,相關函式,求解線性方程組以及隨機數發生器的相關內容。這個月接著深入發掘Math.NET的各種功能,並對原始碼進行分析,使得大家可以儘可能的使用Math.NET在.NET平臺下輕易的開發數

【原創】開源Math.NET基礎數學使用(17)C#計算矩陣條件數

  上個月對Math.NET的基本使用進行了介紹,主要內容有矩陣,向量的相關操作,解析資料格式,數值積分,資料統計,相關函式,求解線性方程組以及隨機數發生器的相關內容。這個月接著深入發掘Math.NET的各種功能,並對原始碼進行分析,使得大家可以儘可能的使用Math.NET在.NET平臺下輕易的開發數學計

【原創】開源Math.NET基礎數學使用(08)C#進行數值積分

  在數值計算的需求中,數值積分也是比較常見的一個。我們也知道像Matlab,Mathematics等軟體的積分求解功能非常高大上,不僅能求解定積分,還能求解不定積分,甚至多重積分等等。而Math.NET這個元件沒有如此高階的功能,目前也只提供了比較件的閉區間上的定積分求解功能。今天就一起來看看,因為不定

【原創】開源Math.NET基礎數學使用(13)C#實現其他隨機數生成器

1 public abstract class RandomSource : System.Random 2 { 3 readonly bool _threadSafe; 4 readonly object _lock = new objec

【原創】開源Math.NET基礎數學使用(05)C#解析Delimited Formats資料格式

前言   上一篇文章,我們介紹了使用C#讀寫Matlab的Mat資料格式和通用的Matrix Market資料格式。今天還要介紹一個Math.NET讀取Delimited Formats資料格式的例子。Delimited Formats(也稱DSV) 資料格式也是一種比較常見的資料儲存和交換格式,和CS

【原創】開源Math.NET基礎數學使用(03)C#解析Matlab的mat格式

前言   本人在09年使用該元件的時候,主要原因也是為了替代Matlab,進行相關數學計算,現在依然有很多人關注Matlab計算,特別是學生,而很多也在使用C#,所以這些人通常由於個人能力有限(無法精通某一個門語言來解決綜合問題),無法單純的通過C#或者Matlab來解決問題,就想通過混合程式設計來

【原創】開源Math.NET基礎數學使用(14)C#生成安全的隨機數

  真正意義上的隨機數(或者隨機事件)在某次產生過程中是按照實驗過程中表現的分佈概率隨機產生的,其結果是不可預測的,是不可見的。而計算機中的隨機函式是按照一定演算法模擬產生的,其結果是確定的,是可見的。我們可以這樣認為這個可預見的結果其出現的概率是100%。所以用計算機隨機函式所產生的“隨機數”並不隨機,

【原創】開源Math.NET基礎數學使用(10)C#進行基本資料統計

1 /// <summary> 2 /// 對未排序的陣列進行統計操作 警告: Methods with the Inplace-suffix may modify the data array by reordering its entries. 3 /// </su

【原創】開源Math.NET基礎數學使用(12)C#隨機數擴充套件方法

1 /// <summary>這個類是對System.Random類的擴充套件,擴充套件方法可以生成更多型別的偽隨機數,而不是僅僅是double和Int32型別</summary> 2 /// <remarks>這個擴充套件是執行緒安全的,並且只有在Math.

【原創】開源Math.NET基礎數學使用(09)相關數論函式使用

1 /// <summary> 2 /// 整數數論函式 3 /// Integer number theory functions. 4 /// </summary> 5 public static class Euclid 6 { 7

【原創】開源Math.NET基礎數學使用(01)綜合介紹

前言   幾年前接觸這個元件的時候,只需要在.NET平臺進行一些常規的微積分計算,功能還比較少,只限於常規的數值計算,現在已經功能越來越多了,應該是目前最好的替代Matlab進行數值計算的.NET元件。本文及接下來的幾篇文章將詳細的對該元件進行介紹。還有在.NET平臺使用相關Matlab混編

【原創】開源Math.NET基礎數學使用(06)直接求解線性方程組

  在前幾篇關於Math.NET的部落格中(見上面連結),主要是介紹了Math.NET中主要的數值功能,並進行了簡單的矩陣向量計算例子,接著使用Math.NET的矩陣等物件,對3種常用的矩陣資料交換格式的讀寫。一方面可以瞭解Math.NET的使用,另一方面以後也可以直接讀取和儲存資料為這兩種格式,給大家的

【原創】開源Math.NET基礎數學使用(07)常用的數學物理常數

1 /// <summary>數學常數 e ,也稱 尤拉數(Euler's number)</summary> 2 public const double E = 2.7182818284590452353602874713526624977572470937000d;