GNU Octave
GNU Octave adalah perangkat lunak bebas GNU yang dipakai untuk analisis numerik, dan setara dengan kemampuan perangkat lunak MATLAB. Octave dapat menyelesaikan permasalahan linear dan nonlinear secara numerik dengan menggunakan bahasa yang kompatibel dengan MATLAB. Perangkat lunak ini juga dapat digunakan sebagai bahasa pemrosesan tumpak. Sebagai bagian dari GNU Project, Octave adalah perangkat lunak bebas dengan lisensi Lisensi Publik Umum GNU.
GNU Octave | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Tipe | paket GNU, bahasa pemrograman, mathematical software (en) dan perangkat lunak bebas | ||||||||||||
Versi pertama | 1988 | ||||||||||||
Versi stabil | Daftar 3.8.1 (7 Maret 2014) 4.0.0 (29 Mei 2015) 4.0.1 (21 Maret 2016) 4.0.2 (21 April 2016) 4.0.3 (2 Juli 2016) 4.2.0 (14 November 2016) 4.2.1 (24 Februari 2017) 3.8.2 (7 Agustus 2014) 3.8.0 (27 Desember 2013) 3.6.4 (21 Februari 2013) 3.6.3 (4 September 2012) 3.6.2 3.6.1 (22 Februari 2012) 3.6.0 (15 Januari 2012) 3.4.3 (10 Oktober 2011) 3.4.2 (24 Juni 2011) 3.4.1 (15 Juni 2011) 3.4.0 (8 Februari 2011) 3.2.4 (22 Januari 2010) 3.2.3 (14 September 2009) 3.2.2 (21 Juli 2009) 3.2.0 (5 Juni 2009) 3.0.5 (7 April 2009) 3.0.4 (1r April 2009) 3.0.3 (29 September 2008) 3.0.2 (19 Agustus 2008) 3.0.1 (23 April 2008) 3.0.0 (21 Desember 2007) 2.9.19 (11 Desember 2007) 2.9.18 (5 Desember 2007) 2.9.17 (10 November 2007) 2.9.16 (31 Oktober 2007) 2.9.15 (13 Oktober 2007) 2.9.14 (17 September 2007) 2.9.13 (25 Juli 2007) 2.9.12 (23 Mei 2007) 2.9.11 (22 Mei 2007) 2.9.10 (27 Maret 2007) 2.9.9 (2 Oktober 2006) 2.9.8 (24 Agustus 2006) 2.9.7 (28 Juli 2006) 2.9.6 (9 Juni 2006) 2.9.5 (22 Maret 2006) 2.1.73 (20 Maret 2006) 2.1.72 (11 November 2005) 2.9.4 (11 November 2005) 2.1.71 (18 Mei 2005) 2.9.3 (18 Mei 2005) 2.1.70 (5 Mei 2005) 2.9.2 (22 April 2005) 2.1.69 (28 Maret 2005) 2.1.68 (27 Maret 2005) 2.9.1 (27 Maret 2005) 2.9.0 (15 Maret 2005) 2.1.67 (4 Maret 2005) 2.1.66 (24 Februari 2005) 2.1.65 (18 Februari 2005) 2.1.64 (3 Desember 2004) 2.1.63 (17 November 2004) 2.1.62 (12 November 2004) 2.1.61 (5 November 2004) 2.1.60 (24 September 2004) 2.1.59 (21 September 2004) 2.1.58 (2 September 2004) 2.1.57 (12 Maret 2004) 2.1.56 (5 Maret 2004) 2.1.55 (20 Februari 2004) 2.1.54 (16 Februari 2004) 2.1.53 (22 Januari 2004) 2.1.52 (25 November 2003) 2.1.50 (27 Juni 2003) 2.1.49 (28 Mei 2003) 2.1.48 (6 Mei 2003) 2.1.47 (2 Mei 2003) 2.1.46 (3 Maret 2003) 2.1.45 (19 Februari 2003) 2.1.44 (3 Februari 2003) 2.1.43 (4 Januari 2003) 2.1.42 (2 Januari 2003) 2.1.41 (2 Januari 2003) 2.1.40 (20 November 2002) 2.1.39 (1r November 2002) 2.1.38 (29 Oktober 2002) 2.1.37 (23 Oktober 2002) 2.1.36 (1r Mei 2002) 2.1.35 (2 November 2001) 2.1.34 (19 April 2001) 2.1.33 (5 Januari 2001) 2.1.32 (9 Desember 2000) 2.1.31 (18 Juli 2000) 2.1.30 (31 Maret 2000) 2.1.29 (24 Maret 2000) 2.1.28 (8 Februari 2000) 2.1.27 (8 Februari 2000) 2.1.26 (8 Februari 2000) 2.1.25 (28 Januari 2000) 2.1.24 (12 Januari 2000) 2.1.23 (17 Desember 1999) 2.1.22 (14 Desember 1999) 2.1.21 (10 November 1999) 2.1.20 (3 November 1999) 2.1.19 (21 Oktober 1999) 2.1.18 (20 Oktober 1999) 2.1.17 (13 Oktober 1999) 2.1.16 (13 Oktober 1999) 2.1.15 (13 Oktober 1999) 2.1.14 (30 Maret 1999) 2.1.13 (27 Januari 1999) 2.1.12 (10 Desember 1998) 2.1.11 (4 Desember 1998) 2.1.10 (6 November 1998) 2.1.9 (3 November 1998) 2.1.8 (29 Oktober 1998) 2.1.7 (15 Mei 1998) 2.1.6 (4 Mei 1998) 2.1.5 (22 Februari 1998) 2.1.4 (5 Februari 1998) 2.1.3 (19 November 1997) 2.1.2 (11 Juli 1997) 2.1.1 (12 Juni 1997) 2.1.0 (5 Juni 1997) 2.0.17 (12 April 2002) 2.0.13 (21 Mei 1998) 2.0.12 (3 Mei 1998) 2.0.11 (24 Februari 1998) 2.0.10 (6 Februari 1998) 2.0.9 (10 Juli 1997) 2.0.8 (23 Juni 1997) 2.0.7 (4 Juni 1997) 2.0.6 (27 Mei 1997) 2.0.5 (1r Maret 1997) 2.0.4 (20 Februari 1997) 2.0.3 (18 Februari 1997) 2.0.2 (27 Januari 1997) 2.0.1 (7 Januari 1997) 2.0 (10 Desember 1996) 1.1.1 (23 Februari 1995) 1.1.0 (12 Januari 1995) 1.0.1 (9 Maret 1994) 1.0 (17 Februari 1994) 0.83 (13 Februari 1994) 0.82 (8 Februari 1994) 0.81 (28 Januari 1994) 0.80 (18 Januari 1994) 0.79 (8 November 1993) 0.78 (5 November 1993) 0.77.1 (29 Oktober 1993) 0.77 (23 Oktober 1993) 0.76 (5 Oktober 1993) 0.75.4 (4 Oktober 1993) 0.75.3 (27 September 1993) 0.75.2 (25 September 1993) 0.75.1 (17 September 1993) 0.75 (15 September 1993) 0.74.1 (11 Agustus 1993) 0.74 (20 Juli 1993) 0.73.1 (11 Juli 1993) 0.73 (10 Juli 1993) 0.72.2 (8 Juli 1993) 0.72.1 (5 Juli 1993) 0.72 (10 Juni 1993) 0.71.10 (3 Juni 1993) 0.71.9 (1r Juni 1993) 0.71.8 (27 Mei 1993) 0.71.7 (21 Mei 1993) 0.71.6 (18 Mei 1993) 0.71.4 (12 Mei 1993) 0.71.3 (11 Mei 1993) 0.71.2 (1r Mei 1993) 0.71.1 (19 April 1993) 0.71 (15 April 1993) 0.70 (8 Maret 1993) 0.69 (23 Februari 1993) 0.68 (16 Februari 1993) 0.67 (9 Februari 1993) 0.66 (28 Januari 1993) 0.65 (26 Januari 1993) 0.64 (15 Januari 1993) 0.63 (14 Januari 1993) 0.62 (13 Januari 1993) 0.61 (10 Januari 1993) 0.60 (4 Januari 1993) 2.1.51 (15 November 2003) 4.2.2 (13 Maret 2018) 4.4.0 (30 April 2018) 4.4.1 (9 Agustus 2018) 5.1.0 (23 Februari 2019) 5.2.0 (31 Januari 2020) 6.1.0 (26 November 2020) 6.2.0 (20 Februari 2021) 6.3.0 (11 Juli 2021) 6.4.0 (30 Oktober 2021) 7.1.0 (6 April 2022) 7.2.0 (28 Juli 2022) 7.3.0 (2 November 2022) 8.1.0 (7 Maret 2023) 8.2.0 (13 April 2023) 8.3.0 (8 Agustus 2023) 8.4.0 (5 November 2023) 9.1.0 (14 Maret 2024) 9.2.0 (7 Juni 2024) 9.3.0 (15 Desember 2024) | ||||||||||||
Genre | Komputasi ilmiah | ||||||||||||
Lisensi | GNU General Public License | ||||||||||||
Bahasa | Daftar bahasa 19 bahasa | ||||||||||||
Eponim | Octave Levenspiel (en) | ||||||||||||
Bagian dari | Proyek GNU | ||||||||||||
| |||||||||||||
| |||||||||||||
| |||||||||||||
Karena Octave memiliki Lisensi Publik GNU, maka Octave dapat dimodifikasi, disalin, dan digunakan secara bebas.[1] Program ini berjalan di Microsoft Windows dan kebanyakan sistem operasi Unix dan mirip Unix, termasuk Linux, Android, dan macOS.[2][3][4]
GNU Octave biasanya digunakan untuk komputasi ilmiah pribadi, akademis, dan industri. Misalnya, GNU Octave digunakan pada paralel komputer besar di Pittsburgh Supercomputing Center untuk mencari kerentanan yang berhubungan dengan teknik penebakan nomor Jaminan Sosial.[5] Akselerasi dengan OpenCL atau CUDA juga dapat dilakukan dengan penggunaan GPU.[6]
Sejarah
Proyek GNU Octave diawali sekitar tahun 1988.[7] Awalnya, proyek ini dimaksudkan sebagai pendamping mata kuliah desain reaktor kimia. Pengembangan penuh dimulai oleh John W. Eaton pada tahun 1992. Versi alfa pertama dirilis pada 4 Januari 1993 dan versi 1.0 dirilis pada tanggal 17 Februari 1994.
Nama program ini diambil dari Octave Levenspiel, mantan profesor dari pengembang utama. Levenspiel dikenal oleh karena kemampuannya melakukan perhitungan belakang-surat dengan cepat.[1]
Lini waktu pengembangan
Waktu | Keterangan |
---|---|
1988/1989 | Diskusi pertama (buku dan perangkat lunak) |
Februari 1992 | Pengembangan dimulai |
Januari 1993 | Berita di web (version 0.60) |
Februari 1994 | Publikasi pertama (versi 1.0.0 ke 1.1.1)[8] |
Desember 1996 | Publikasi kedua (versi 2.0.x) dengan porting ke Windows (Cygwin)[9] |
Desember 2007 | Publikasi versi 3.0 (Milestone)[10] |
29 Mei 2015 | Versi 4.0.0 (GUI stabil dan sintaks baru untuk OOP)[11][12][13][14] |
1 Maret 2019 | Publikasi Octave 5.1.0 (penggunaan minimum Qt 4.8, rekomendasi Qt 5), dukungan hiDpi[15] |
26 November 2020 | Publikasi Octave 6.1.0 (rekomendasi penggunaan QT5, Qt 4.x ditinggalkan dan akan dihapus pada versi 7)[16] |
6 April 2022 | Publikasi Octave 7.1.0 (rekomendasi penggunaan QT5), peningkatan backend grafik dan kompatibilitas MATLAB[17] |
7 Maret 2023 | Publikasi Octave 8.1.0, peningkatan back-end grafik dan kompatibilitas MATLAB.[18] |
14 Maret 2024 | Publikasi Octave 9.1.0, peningkatan umum, kompatibilitas MATLAB, dan grafik.[19] |
7 Juni 2024 | Publikasi Octave 9.2.0, perbaikan kutu dan GUI.[20] |
Detail teknis
GNU Octave ditulis dari C++ dengan pustaka dasar C++. GNU Octave menggunakan Penerjemah (komputasi) untuk menjalankan bahasa skrip Octave. Perangkat lunak ini juga dapat dikembangkan dengan memuat modul atau paket secara dinamis. GNU Octave dapat digunakan untuk membuat grafika atau plot yang berdasarkan pada OpenGL atau gnuplot. Perangkat lunak ini juga memiliki GUI selain CLI yang lebih tradisional; lihat bagian Antarmuka pengguna grafis di bawah.
Antarmuka pengguna grafis
GNU Octave memiliki antarmuka pengguna grafis (GUI) dan sebuah Lingkungan pengembangan terpadu (bahasa Inggris: integrated development environment; IDE) yang ditulis dengan Qt. GUI ini telah tersedia sejak GNU Octave 3.8,[21] dan menjadi antarmuka bawaan (di atas antarmuka baris perintah) di rilis GNU Octave versi 4.0.[11]
GUI ini mendapatkan respons positif oleh kontributor EDN yang menulis "(GNU Octave) sekarang memiliki GUI yang dapat digunakan" saat meninjau GUI yang saat itu baru pada tahun 2014.[22]
Beberapa grafis bagian depan juga telah dikembangkan, seperti ToolboX untuk pendidikan koding.
Bahasa
Octave adalah bahasa pemrograman terjemahan. Bahasa ini adalah bahasa pemrograman terstruktur (mirip dengan C), mendukung banyak fungsi umum di pustaka dasar C, dan beberapa pemanggilan sistem dan fungsi UNIX.[23] Namun, Octave tidak mendukung mentransfer argumen dengan referensi,[24] meskipun argumen fungsi bersifat salin saat tulis untuk menghindari duplikasi yang tidak diinginkan.
Program Octave berisi daftar pemanggilan fungsi atau skrip. Sintaks yang digunakan berdasarkan matriks dan memberikan beberapa fungsi untuk operasi matriks. Bahasa ini mendukung berbagai struktur data dan memperbolehkan pemrograman berorientasi objek.[25] Sintaks yang digunakan Octave sangat mirip dengan MATLAB. Maka dari itu, banyak fungsi yang ditulis dengan hati-hati dapat berjalan di Octave maupun MATLAB.[26]
Paket fungsi
GNU Octave memiliki banyak paket yang tersedia untuk menambahkan kemampuan dari Octave. Paket tersebut dapat ditemukan pada Github Octave Packages. Paket dapat dibuat dan dipelihara oleh siapa pun.
Kompatibilitas dengan MATLAB
GNU Octave dikembangkan dengan mempertimbangkan kompatibilitas dengan MATLAB dan memiliki fitur yang mirip, termasuk:
- Matriks adalah tipe data utama.
- Memiliki dukungan bilangan kompleks bawaan.
- Fungsi matematika bawaan dan pustaka fungsi yang luas.
- Dapat dikembangkan dalam bentuk fungsi yang dibuat oleh pengguna.
Octave menganggap inkompatibilitas dengan MATLAB sebagai kutu. Maka dari itu, Octave dianggap sebagai klon perangkat lunak, yang tidak melanggar hak cipta perangkat lunak.
Skrip MATLAB yang ditemukan pada repository FileExchange milik MathWorks secara prinsip kompatibel dengan Octave. Namun, ketika skrip tersebut diunggah atau diberikan oleh pengguna di bawah lisensi yang kompatibel dengan lisensi BSD atau lisensi sumber terbuka, kebijakan penggunaan FileExchange melarang penggunaan skrip tersebut di luar perankat lunak milik MathWorks, MATLAB.[27][28][29]
Kompatibilitas sintaks
Sintaks dari Octave sebagian besar kompatibel dengan sintaks MATLAB. Namun, terdapat beberapa perbedaan kecil yang dibuat secara sengaja, termasuk:[30]
- Fungsi dapat dibuat melalui antarmuka baris perintah di Octave;
- Baris komentar dapat dibuat dengan karakter
#
maupun%
; - Untaian dapat dibuat dengan karakter kutip dua (
"
) maupun kutip satu ('
); - Pengguna dapat melanjutkan baris kode dengan karakter garis miring terbalik (
\
) maupun karakter elipsis (...
); - Blok kode dapat ditutup dengan kata kunci yang lebih spesifik, seperti
endif
,endfor
,endwhile
,endfunction
, dan lain sebagainya; - Octave mendukung operator penambahan atau pengurangan seperti C, termasuk
++
,--
,+=
,*=
,/=
, dan lain sebagainya; - Octave dapat mengindeks selain variabel, seperti
[1:10](3)
; dan - Octave menggunakan operator
!
sebagai negasi, mirip dengan~
.
Kompatibilitas fungsi
Banyak fungsi MATLAB yang telah tersedia di GNU Octave. Beberapa di antaranya dapat diakses melalui paket yang dapat diunduh dan dipasang dari Octave Forge. Beberapa fungsi lain yang belum tersedia dapat dilihat pada fungsi __unimplemented.m__
.
Ketika fungsi yang belum diimplementasikan dipanggil, Octave akan menampilkan pesan galat seperti berikut:
octave:1> guide
warning: the 'guide' function is not yet implemented in Octave
Please read <http://www.octave.org/missing.html> to learn how you can contribute missing functionality.
error: 'guide' undefined near line 1 column 1
Aplikasi antarmuka grafis
Pengguna dapat membuat aplikasi dengan antarmuka grafis dengan kode Octave. Hal ini dapat dilakukan dengan menggunakan beberapa fungsi bawaan GNU Octave.[31] Di bawah ini beberapa contohnya:
Elemen antarmuka dasar, seperti tombol, slider, label, check-box, radio button, dan lain sebagainya.
# membuat figure dan panel di dalamnya
f = figure;
# create a button (default style)
button1 = uicontrol (f, "string", "A Button", "position",[10 10 150 40]);
# membuat kontrol edit
e1 = uicontrol (f, "style", "edit", "string", "editable text", "position",[10 60 300 40]);
# membuat kotak cek
c1 = uicontrol (f, "style", "checkbox", "string", "a checkbox", "position",[10 120 150 40]);
# slider
s1 = uicontrol (f, "style", "slider", "position", [10 230, 300, 20]);
# teks
t1 = uicontrol (f, "style", "text", "string", "label / text", "position", [10 260, 300, 20]);
# tombol sakelar
tb1 = uicontrol (f, "style", "togglebutton", "string", "a togglebutton", "position", [10 290, 300, 20]);
# membuat grup tombol
gp = uibuttongroup (f, "Position", [ 0 0.75 1 1]);
# membuat tombol dalam grup
b1 = uicontrol (gp, "style", "radiobutton", "string", "Choice 1", "Position", [ 10 50 100 50 ]);
b2 = uicontrol (gp, "style", "radiobutton", "string", "Choice 2", "Position", [ 10 10 100 50 ]);
# membuat tombol di luar grup
b3 = uicontrol (f, "style", "radiobutton","string", "Not in the group","Position", [ 10 170 200 50 ]);
Textbox dengan kemampuan memasukkan data ke Workspace.
prompt = {"Width", "Height", "Depth"};
defaults = {"1.10", "2.20", "3.30"};
rowscols = [1,10; 2,20; 3,30];
dims = inputdlg (prompt, "Enter Box Dimensions", rowscols, defaults);
Listbox dengan kotak pesan.
my_options = {"An item", "another", "yet another"};
[sel, ok] = listdlg ("ListString", my_options, "SelectionMode", "Multiple");
if (ok == 1)
msgbox ("You selected:");
for i = 1:numel (sel)
msgbox (sprintf ("\t%s", my_options{sel(i)}));
endfor
else
msgbox ("You cancelled.");
endif
Referensi
- ^ a b Eaton, John W. "About Octave". Diakses tanggal 28 Juni 2009.
- ^ "FAQ: Getting Octave". Diarsipkan dari versi asli tanggal 21 November 2011. Diakses tanggal 4 April 2009.
- ^ "Top (GNU Octave (version 6.3.0))". octave.org.
- ^ "Octave for Android - Octave". wiki.octave.org. Diakses tanggal 23 Agustus 2021.
- ^ "Social Security Number Vulnerability Findings Relied on Supercomputing". 8 Juli 2009. Diarsipkan dari versi asli tanggal 29 Februari 2012.
- ^ "Drop-in Acceleration of GNU Octave". NVIDIA Developer Blog. 5 Juni 2014.
- ^ "About GNU Octave". www.gnu.org. GNU. Diakses tanggal 1 Mei 2018.
- ^ "GNU Octave Version 1". www.gnu.org.
- ^ "GNU Octave Version 2". www.gnu.org.
- ^ "GNU Octave Version 3". www.gnu.org.
- ^ a b "GNU Octave Version 4.0". www.gnu.org.
- ^ "GNU Octave 4.0.0 Released". www.gnu.org. 29 Mei 2015.
- ^ "GNU Octave 4.0.1 Released". www.gnu.org. 23 Maret 2016.
- ^ "GNU Octave 4.0.3 Released". www.gnu.org. 2 Juli 2016.
- ^ "GNU Octave Version 5". www.gnu.org.
- ^ "GNU Octave 6.1.0 Released". www.gnu.org. 26 November 2020.
- ^ "GNU Octave 7.1.0 Released". www.gnu.org. 6 April 2022.
- ^ "GNU Octave 8.1.0 Released". octave.org. 7 Maret 2023.
- ^ "GNU Octave Version 9". octave.org (dalam bahasa Inggris). Diakses tanggal 25 Maret 2024.
- ^ "Octave 9.2.0 released". octave.org (dalam bahasa Inggris). 7 Juni 2024. Diakses tanggal 2024-11-05.
- ^ "GNU Octave Version 3.8". www.gnu.org.
- ^ Hageman, Steve (7 Februari 2014). "GNU Octave hits a high note". EDN.
- ^ "GNU Octave - Controlling subprocesses". 14 November 2008. Diarsipkan dari versi asli tanggal 7 Januari 2009. Diakses tanggal 28 Januari 2009.
- ^ "GNU Octave". Diakses tanggal 28 Januari 2009.
- ^ "Summary of important user-visible changes for version 3.2". Diakses tanggal 5 Januari 2012.
- ^ "FAQ: MATLAB compatibility". Diarsipkan dari versi asli tanggal 21 November 2011. Diakses tanggal 4 April 2009.
- ^ "FAQ - Octave". wiki.octave.org. Diakses tanggal 5 Desember 2022.
- ^ "MATLAB Central Terms of Use". www.mathworks.com (dalam bahasa Inggris). Diakses tanggal 5 Desember 2022.
- ^ "File Exchange Licensing FAQ". www.mathworks.com (dalam bahasa Inggris). Diakses tanggal 5 Desember 2022.
- ^ "Differences between Octave and MATLAB". Octave Wiki. Diakses tanggal 8 Desember 2024.
- ^ "GUI Development (version 9.2.0)". GNU Octave Documentation. Diakses tanggal 2 Desember 2024.
Pranala luar