GNU Octave
GNU Octave | |
---|---|
Тип | математическое программное обеспечение |
Разработчик | John W. Eaton |
Написана на | C++ |
Операционная система | Linux, UNIX, Cygwin, Windows, Android[1] |
Первый выпуск | 1988 |
Последняя версия | 7.1.0[2] (6 апреля 2022 ) |
Лицензия | GNU General Public License |
Сайт | gnu.org/software/octave/ |
GNU Octave — свободная программная система для математических вычислений[3], использующая совместимый с MATLAB язык высокого уровня[4].
Octave представляет интерактивный командный интерфейс для решения линейных и нелинейных математических задач, а также проведения других численных экспериментов. Кроме того, Octave можно использовать для пакетной обработки. Язык Octave оперирует арифметикой вещественных и комплексных скаляров, векторов и матриц, имеет расширения для решения линейных алгебраических задач, нахождения корней систем нелинейных алгебраических уравнений, работы с полиномами, решения различных дифференциальных уравнений, интегрирования систем дифференциальных и дифференциально-алгебраических уравнений первого порядка, интегрирования функций на конечных и бесконечных интервалах. Этот список можно легко расширить, используя язык Octave (или используя динамически загружаемые модули, созданные на языках C, C++, Фортран и др.).
Технические детали
- Octave написан на C++ с использованием стандартной библиотеки шаблонов;
- Для запуска скриптов Octave использует интерпретатор;
- Octave можно дополнять динамически подгружаемыми модулями;
- Для создания и распечатки графиков Octave использует на выбор gnuplot, встроенный модуль на основе FLTK, или Grace.
- Название дано в честь профессора химического машиностроения Октава Левеншпиля еврейского происхождения (Octave Levenspiel).
Язык Octave
Octave — интерпретируемый язык программирования. Он похож на Си и поддерживает большинство основных функций стандартной библиотеки Си, а также основные команды и системные вызовы Unix. С другой стороны, он не поддерживает передачу аргументов по ссылке (особенность дизайна).
Синтаксис языка очень похож на MATLAB, и грамотно написанные скрипты будут запускаться как в Octave, так и в MATLAB.
Некоторые возможности
- Интерфейс
Интерфейс командной строки Octave построен с использованием библиотеки GNU Readline, что даёт доступ к таким обычным возможностям последней, как автодополнение по клавише Tab ↹, история команд и инкрементальный поиск по ней (Ctrl+R, Ctrl+S), возможность переопределения клавиш, и т. д. Графический интерфейс до версии 3.8.0 был представлен дополнениями (графики он мог выводить и без них).
- Octave Forge
Octave Forge[5] - менеджер пакетов-расширений для системы Octave.
- Интеграция с C++
Выражения Octave можно вычислять из программ на C++. Для этого в C++ подключается специальная библиотека octave/oct.h. К примеру, фрагмент кода для вычисления rand([9000,1])
:
#include <octave/oct.h>
…
ColumnVector NumRands(2);
NumRands(0) = 9000;
NumRands(1) = 1;
octave_value_list f_arg, f_ret;
f_arg(0) = octave_value(NumRands);
f_ret = feval("rand",f_arg,1);
Matrix unis(f_ret(0).matrix_value());
- Производительность
В конце 1990-х годов (2-я серия выпусков) производительность Octave существенно уступает по производительности MATLAB.[6] Однако к концу 2000-х годов (3-я серия выпусков) производительности этих пакетов «почти сравнялись», а остающуюся разницу приписывают наличию в составе MATLAB интерпретатора-компилятора (Just in Time — JIT), которого нет в Octave.[7]
- Параллельные вычисления
Основными решениями по организации распределенных вычислений в среде Octave являются библиотеки bcMPI, MPI Toolbox for Octave (MPITB), octave-parallel_mpi и parallel (ранее octave-parallel), предназначенные для кластерных систем, и модуль parcellfun библиотеки general для обеспечения параллельных вычислений в масштабе «одной машины» (на многоядерных и массивно-параллельных системах).
Первые три библиотеки обеспечивают интерфейс к наличной инсталляции библиотеки MPI и, насколько возможно, транслируют в Octave (bcMPI — и в MATLAB) синтаксис подмножества вызовов MPI. Соответственно в этих случаях вычисления распределены лишь настолько, насколько это подготовлено программистом, и обеспечиваются в пределах возможностей системной инсталляции MPI.
Библиотека parallel, напротив, не требует наличия среды типа MPI или PVM, а обеспечивает распределённость с помощью внутренних средств пакета Octave.
Совместимость с MATLAB
Octave был написан с учётом совместимости с MATLAB и реализует многие его возможности:
- матрицы в качестве основных типов данных;
- встроенная поддержка комплексных чисел;
- мощные встроенные математические функции и большие библиотеки функций;
- расширяемость, благодаря возможности создания пользовательских функций.
Но есть и некоторые отличия:
- комментарии могут начинаться как с символа #, так и с символа
%
; - поддерживаются C++-подобные операторы
++
,--
,+=
,*=
,/=
; - элементы могут быть адресованы без создания новой переменной, например
[1:10](3)
; - данные строкового типа могут быть заданы как символом «"», так и символом «'».
Литература
- GNU Octave Manual Version 3 / J.W. Eaton, D. Bateman, S. Hauberg. Network Theory Limited, 2008. 568 p.
- Е. Р. Алексеев, О. В. Чеснокова «Введение в Octave для инженеров и математиков» М.: ALT Linux, 2012. — 368 с.: ил. Учебник Octave на русском
- Eddelbüttel, D. Bank of Montreal, Toronto, Canada. Econometrics with Octave / D. Eddelbüttel [Electronic resource]. — Mode of access : http://dirk.eddelbuettel.com/papers/octave.pdf. - Date of access : 15.03.2010.
- Octave and Python: High-Level Scripting Languages Productivity and Performance Evaluation / J.C. Chaves [et. al.] [Electronic resource]. — Mode of access : https://web.archive.org/web/20120520234335/http://www.osc.edu/research/cse/projects/octave_python.pdf. - Date of access : 15.03.2010.
Ссылки
- Официальная страница (англ.)
- Тестирование быстродействия MATLAB и GNU/Octave (рус.), 2010г.
Примечания
- ↑ Octave – Android Apps auf Google Play . Дата обращения: 18 февраля 2013. Архивировано 9 марта 2014 года.
- ↑ GNU Octave 7.1.0 Released. Архивировано 9 апреля 2022 года. Дата обращения 10 апреля 2022.
- ↑ Octave . Дата обращения: 24 августа 2009. Архивировано 22 ноября 2017 года.
- ↑ About Octave . Дата обращения: 22 января 2011. Архивировано 25 января 2021 года.
- ↑ Octave Forge . Дата обращения: 27 февраля 2018. Архивировано 28 февраля 2018 года.
- ↑ Eddelbuettel…
- ↑ Chaves et al. …
- Программное обеспечение по алфавиту
- Программное обеспечение проекта GNU
- Свободное математическое программное обеспечение
- Предметно-ориентированные языки программирования
- Программное обеспечение для Windows
- Программное обеспечение для Linux
- Свободное программное обеспечение, написанное на C++
- Приложения, использующие Qt