GNU Octave

Материал из Википедии — свободной энциклопедии
Версия от 14:09, 15 ноября 2025; imported>Alex NB OT (унификация языковых шаблонов)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигации Перейти к поиску

Шаблон:Значения Шаблон:Карточка программы GNU Octave — свободная программная система для математических вычислений<ref>Шаблон:Cite web</ref>, использующая совместимый с MATLAB язык высокого уровня<ref>Шаблон:Cite web</ref>.

Предоставляет интерактивный командный интерфейс для решения линейных и нелинейных математических задач, а также проведения других численных экспериментов. Кроме того, Octave можно использовать для пакетной обработки. Язык Octave оперирует арифметикой вещественных и комплексных скаляров, векторов и матриц, имеет расширения для решения линейных алгебраических задач, нахождения корней систем нелинейных алгебраических уравнений, работы с полиномами, решения различных дифференциальных уравнений, интегрирования систем дифференциальных и дифференциально-алгебраических уравнений первого порядка, интегрирования функций на конечных и бесконечных интервалах. Этот список можно легко расширить, используя язык Octave (или используя динамически загружаемые модули, созданные на Си, C++, Фортране и других).

Система написана на C++ с использованием стандартной библиотеки шаблонов. Для запуска сценариев используется встроенный интерпретатор. Для создания и отображения графиков можно использовать на выбор gnuplot, встроенный модуль на основе FLTK, или Шаблон:Iw.

Название дано в честь профессора химического машиностроения Октава Левеншпиля.

Язык Octave

Система оснащена собственным интерпретируемым языком с Matlab-подобным синтаксисом, при этом поддерживает большинство основных функций стандартной библиотеки Си, а также основные команды и системные вызовы Unix. С другой стороны, он не поддерживает передачу аргументов по ссылке (особенность дизайна).

Некоторые возможности

Интерфейс командной строки построен с использованием библиотеки GNU Readline, что даёт доступ к таким обычным возможностям последней, как автодополнение по клавише Шаблон:Клавиша, история команд и инкрементальный поиск по ней (Шаблон:Клавиша, Шаблон:Клавиша), возможность переопределения клавиш, и так далее. Графический интерфейс до версии 3.8.0 был представлен дополнениями (графики он мог выводить и без них).

Octave Forge<ref>Шаблон:Cite web</ref> — менеджер пакетов-расширений для системы Octave.

Выражения Octave можно вычислять из программ на C++. Для этого в C++ подключается специальная библиотека octave/oct.h. К примеру, фрагмент кода для вычисления rand([9000,1]): <syntaxhighlight lang="cpp">

  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()); </syntaxhighlight>

Параллельные вычисления

В системе имеются средства для организации распределённых вычислений с использованием библиотек 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);
  • данные строкового типа могут быть заданы как символом «"», так и символом «'».

В конце 1990-х годов (2-я серия выпусков) производительность Octave существенно уступала по производительности MATLAB<ref name="eddelbuettel">Eddelbuettel…</ref>; однако к концу 2000-х годов (3-я серия выпусков) производительности этих пакетов «почти сравнялись», а остающуюся разницу относят наличию в составе MATLAB JIT-компилятора, которого нет в Octave<ref name=chaves+>Chaves et al. …</ref>.

Литература

Ссылки

Шаблон:Родственный проект{{#if:||{{#if:GNU Octave||}}}} Шаблон:Навигация

Примечания

Шаблон:Примечания

Шаблон:GNU Шаблон:FOSS Шаблон:Математическое ПО