MATLAB

歷史

1970年代末到80年代初，時任美國新墨西哥大學教授的克里夫·莫勒爾為了讓學生更方便地使用LINPACK及EISPACK（需要通過FORTRAN編程來實現，但當時學生們並無相關知識），獨立編寫了第一個版本的MATLAB。這個版本的MATLAB只能進行簡單的矩陣運算，例如矩陣轉置、計算行列式和本徵值，此版本軟體分發出大約兩三百份。
1984年，傑克·李特、克里夫·莫勒爾和斯蒂夫·班格爾特合作成立了MathWorks公司，正式把MATLAB推向市場。MATLAB最初是由莫勒爾用FORTRAN編寫的，李特和班格爾特花了約一年半的時間用C重新編寫了MATLAB並增加了一些新功能，同時，李特還開發了第一個系統控制工具箱，其中一些程式碼到現在仍然在使用。C語言版的面向MS-DOS系統的MATLAB 1.0在拉斯維加斯舉行的IEEE決策與控制會議（IEEE Conference on Decision and Control）正式推出，它的第一份訂單只售出了10份拷貝，而到了現在，根據MathWorks自己的資料，目前世界上180多個國家的超過三百萬工程師和科學家在使用MATLAB和Simulink。
1992年，學生版MATLAB推出；1993年，Microsoft Windows版MATLAB面世；1995年，推出Linux版。

MATLAB語言

MATLAB語言是一種互動性的數學手稿語言，其語法與C/C++類似。它支援包括邏輯（boolean）、數值（numeric）、文字（text）、函數柄（function handle）和異質資料容器（heterogeneous container）在內的15種資料類型，每一種類型都定義為矩陣或陣列的形式（0維至任意高維）。
執行MATLAB程式碼的最簡單方式是在MATLAB程式的命令窗口（Command Window）的提示符處（>> ）輸入程式碼，MATLAB會即時返回操作結果（如果有的話）。此時, MATLAB可以看作是一個互動式的數學終端，簡單來說，一個功能強大的「計算機」。MATLAB程式碼同樣可以儲存在一個以.m為字尾名的文字檔案中，然後在命令窗口或其它函數中直接呼叫。

變數與賦值

MATLAB的變數名字跟許多程式語言一樣，嚴格區分大小寫，例如，var、VAR和Var是三個不同的變數。另外，MATLAB中變數名字必須以字母為首字母，3var、_var等是非法的變數名。變數由設定運算子（=）定義. MATLAB是動態檢查的，這意味著變數可以在未定義其類型的情況下賦值並且變數的類型也可以改變，除非將變數看做是符號物件。變數值可以取自常數，計算中的其他變數的值，或某一函數的輸出。例如：
>> x = 17x =
 17>> x = 'hat'x =hat>> x = [3*4, pi/2]x =
 12.0000 1.5708>> y = 3*sin (x)y =
   -1.6097 3.0000

向量和矩陣

MATLAB的意思是"矩陣實驗室"，因此它提供了許多建立向量，矩陣和多維陣列的便捷的方式。在MATLAB自己的語言中，一個向量（vector）指的是一維（1×N或N×1）矩陣，在其他語言中通常被叫做陣列（array）。矩陣（matrix）通常指的是2-維陣列，例如m×n陣列其中m和n大於或等於1。多維陣列通常指的是維數大於2的陣列。
需要注意的是，雖然MATLAB用C語言重寫，但是在矩陣儲存方式上卻和FORTRAN保持一致，兩者使用的均為列優先儲存，而非行優先儲存。在進行較大的矩陣運算時，這一差別對效能的影響是不應忽略的。
MATLAB提供了定義簡單陣列的簡單方式，使用語法：初值:增量:終值。例如：
>> array = 1:2:9array =
 1 3 5 7 9
定義了一個名為array的變數（或向已存在的變數array賦予一個新值），其值為包含1, 3, 5, 7, 9的一個向量。即陣列由1開始（初值），每次以增量2（增量）遞增，當達到9（終值）時停止。
>> array = 1:3:9array =
 1 4 7
在該語法中增量可被省略（這樣僅剩一個冒號），這時增量採用預設值1。
>> ari = 1:5ari =
 1 2 3 4 5
由於預設增量為1，上面的語句對變數ari用1, 2, 3, 4, 5的向量賦值。

在MATLAB內定義矩陣同樣很簡單，例如：
>> M = [1,2,3;4,5,6;7,8,9]M =
     1     2     3
     4     5     6
     7     8     9

在MATLAB記憶體取矩陣元素同樣非常簡單，例如：
>> M = [1,2,3;4,5,6;7,8,9]M =
     1     2     3
     4     5     6
     7     8     9>> M（2,2）ans =
     5>> M（2,:）ans =
     4     5     6>> M（:,1）ans =
     1
     4
     7>> M（2,2） = 10M =
     1     2     3
     4    10     6
     7     8     9

若要對矩陣內所有元素做同樣的運算，如次方倍，則需要在運算元前面加上"."，例如：
>> M = [1,2,3;4,5,6;7,8,9]>> M .^2 
ans =
     1     4     9
    16    25    36
    49    64    81

若不在運算元前面加上"."則代表矩陣運算：
>> M = [1,2,3;4,5,6;7,8,9]M ^2 = M * M =
    30    36    42
    66    81    96
   102   126   150

代數/符號運算

利用MATLAB的符號數學工具箱（Symbolic Math Toolbox）可以進行代數或符號運算，如分解多項式因子和解代數方程式：
>> syms x y>> A=x^3-3*x^2*y+3*x*y^2-y^3;>> factor (A)ans =
（x - y）^3
把多項式簡化成了。
>> solve（'x^2 - 2*x - 4 = 0'）ans =
 1 - 5^（1/2）
 5^（1/2） + 1
求得方程式的兩個解為和。

Maple

Maple是Waterloo Maple Inc.（簡稱Maplesoft）開發的商業電腦代數系統，用於快速計算、開發設計表單、教學基本概念或建立高保真類比模型等。最新版本是2018年3月發布的Maple 2018.0，分Personal（個人版），Professional（專業版），Academic（學術版），Government（政府版）和Student（學生版）。

Mathematica

Mathematica是史蒂芬·沃爾夫勒姆開發的科學計算軟體，開發工作現由Wolfram Research公司負責。最新版本是2018年3月8日發布的Mathematica 11.3.0。

LabVIEW

LabVIEW是美國國家儀器公司開發的視覺化編程平台，主要用於資料採集，儀器控制和工業自動化。最新版本是2017年8月發布的LabVIEW 2017。

FreeMat

FreeMat是一個與MATLAB和互動式資料語言（IDL）很類似的數值計算平台及程式語言。最新版本是2009年10月發布的FreeMat 4.0

GNU Octave

GNU Octave是一種主要用於數值計算的高階語言。它除了提供數值方法解決線性和非線性問題的命令介面，還提供了一種與MATLAB大抵相容的語言。最新版本是2019年3月01日發布的5.1.0。

Scilab

Scilab是一個互動性的數值運算平台，主要用於工程和科學應用方面，例如航空航天、汽車、能源、金融、化學、生物、醫學、國防等。最新版本是5.4.0。

ScicosLab

ScicosLab是由一些曾在INRIA和ENPC參與Scilab開發的研究人員，在Scilab BUILD4版本的基礎上開發出來的GTK+版本，它整合了建模/類比工具Scicos及其它數量眾多的工具箱，被認為是「惟一一款可以與商業軟體MATLAB/Simulink及MATRIXx/SysstemBuild媲美的開源軟體」。最新穩定版本是4.4.1。

JAMA

JAMA (JAMA : A Java Matrix Package)，一種Java語言編程工具包。目前最新1.0.3版本，是2012年11月9日發布的。

NumPy與SciPy

NumPy是Python語言的一個擴充程式庫。支援高階大量的維度陣列與矩陣運算，此外也針對陣列運算提供大量的數學函式函式庫。
SciPy是一個開源，基於NumPy的Python演算法庫和數學工具包，包含的模組有最佳化、線性代數、積分、插值、特殊函式、快速傅立葉變換、訊號處理和圖像處理、常微分方程式求解和其他科學與工程中常用的計算。

Julia

Julia是一種進階通用語言。