Pull to refresh

FOSS решения для математических вычислений на компьютере. Part 1 — Octave

Reading time2 min
Views1.5K
Octave — Высокоуровневый язык в основном предназначенный для математических вычислений. Синтаксис похож а синтаксис Матлаба, кроме того полностью поддерживает его(ну а Матлаб понятное дело не всегда поддерживает синтаксис Октава).
Поддерживает создание графиков с помощью GNUPlot.
Есть версии как для *nix систем, так и для Windows.
Для КДЕ есть KOctave — графический фронтэнд, может быть есть что-то подобное и для остальных WM/DE/систем
Немного детальнее:
Если вы знаете что умеет делать Матлаб, то можете представить что умеет делать Октав, хотя конечно его функциональность несколько меньше в специфических областях(Кто не знает, у Матлаба есть множество всяческих расширений необходимых для областей начиная с лингвистики, заканчивая астрофизикой)

Синтаксис достаточно приятный, логичный: можно объявлять свои функции, можно создавать файлы которые являются сразу функциями и вызывать их просто по имени файла.
Кроме того есть обычный режим — режим работы в командной строке.

Вот первый попавшийся пример, для определения функции факториала(правда она и без этого есть в октаве):
##################################################################
## usage: answer = lg_factorial4( n )
##
## Returns the factorial of n (n!). n should be a positive
## integer or 0.

function answer = lg_factorial4( n )

     if ( nargin != 1 )
         usage ( «factorial( n )» );
     elseif ( !isscalar( n ) || !isreal( n ) )
         error ( «n must be a positive integer value» );
     elseif ( n < 0 )
         error ( «there is no definition for negative factorials» );
     endif
     if ( n == 0 )
        answer = 1;
        return;
     else
        answer = prod( 1:n );
     endif

endfunction
##################################################################

графики рисуются так же как в матлабе — надо два вектора одинаковой длинны, а потом просто «plot»
############################
x = linspace(0, 2*pi, 100);
y = sin(x);
plot(x, y);
############################

P.S. Read more here: Octave:Getting started

P.P.S. данная заметка была написана скорее просто что бы проинформировать о том что есть бесплатный открытый аналог матлаба, который в основном работает почти так же и почти полностью с ним совместим. отличий совсем немного:

1) нет поддержки функций в функциях
2) нет поддержки «object-oriented classes with overloading»
3) нет НЕбольшого(очень малого) количества основных функий (gui, dll, java, activex, dde, web, and serial functions), без которых можно вполне обходится как по мне.
4) нельзя компилить код в бинарники

*) некоторые функции Октава не поддерживаются матлабом.
**) В октаве можно индексировать любой объект а не только переменные
***) В октаве есть операторы "++", "--", "-=", "+=", "*="
****) Есть различия в применении двойных и одинарных ковычек для строк
*****) octave отрисовывает графики GNUPlot`ом
Tags:
Hubs:
+2
Comments8

Articles

Change theme settings