GNU Октава
![]() | |
![]() GNU Octave 4.3.0+, работающий в Linux | |
Разработчики) | Джон В. Итон и многие другие [1] |
---|---|
Начальная версия | 4 января 1993 г 17 февраля 1994 г (версия 1.0) [2] | (первая альфа-версия)
Стабильная версия | 9.1.0 [3] ![]() |
Репозиторий | |
Написано в | C++ (основной), сама Octave (скрипты), C (код-оболочка), Fortran (код-оболочка линейной алгебры) [4] |
Операционная система | Windows , MacOS , Linux , BSD |
Доступно в | 18 языков [5] |
Тип | Научные вычисления |
Лицензия | 2007: GPL-3.0 или новее [а] 1992: GPL-2.0 или новее [б] |
Веб-сайт | ГНУ |
GNU Octave — научный язык программирования для научных вычислений и числовых вычислений . Octave помогает решать линейные и нелинейные задачи численно, а также выполнять другие численные эксперименты с использованием языка, который в основном совместим с MATLAB . Его также можно использовать как пакетно-ориентированный язык. Являясь частью проекта GNU , это бесплатное программное обеспечение согласно условиям Стандартной общественной лицензии GNU .
История [ править ]
Проект был задуман примерно в 1988 году. [6] Первоначально предполагалось, что он станет дополнением к курсу проектирования химических реакторов. Полная разработка была начата Джоном В. Итоном в 1992 году. Первый альфа-релиз датируется 4 января 1993 года, а 17 февраля 1994 года была выпущена версия 1.0. Версия 8.4.0 была выпущена 5 ноября 2023 года. [7]
Программа названа в честь Октава Левеншпиля , бывшего профессора основного автора. Левеншпиль был известен своей способностью выполнять быстрые приблизительные вычисления . [8]
История развития [ править ]
Время | Действие |
---|---|
1988/1989 | Первые обсуждения (книга и программное обеспечение) |
февраль 1992 г. | Начало разработки |
Январь 1993 г. | Новости в Интернете (Версия 0.60) |
февраль 1994 г. | 1-я публикация (версии с 1.0.0 по 1.1.1) [9] |
декабрь 1996 г. | Вторая публикация (версия 2.0.x) с портом Windows ( Cygwin ) [10] |
март 1998 г. | Версия 2.1 |
ноябрь 2004 г. | Версия 2.9 (версия DEV 3.0) [11] |
декабрь 2007 г. | Публикация версии 3.0 (Milestone) [12] |
июнь 2009 г. | Публикация версии 3.2 (Milestone) [13] |
8 февраля 2011 г. | Версия 3.4.0 (Веха) [14] |
22 февраля 2012 г. | Публикация Octave 3.6.1 (Milestone) [15] [16] |
31 декабря 2013 г. | Публикация Octave 3.8.0 (экспериментальный графический интерфейс) [17] [18] [19] |
29 мая 2015 г. | Версия 4.0.0 (стабильный графический интерфейс и новый синтаксис для ООП ) [20] [21] [22] [23] |
14 ноября 2016 г. | Версия 4.2.0 (gnuplot 4.4+) [24] [25] [26] [27] |
30 апреля 2018 г. | Версия 4.4.0 (новая цель для GUI QT Toolkit, набор инструментов FLTK не устарел, и нет графика его удаления, хотя он больше не имеет приоритета) [28] [29] [30] |
1 марта 2019 г. | Публикация Octave 5.1.0 (предпочтительно QT5, минимум Qt 4.8), поддержка hiDpi [31] |
31 января 2020 г. | Публикация Octave 5.2.0 (предпочтительно QT5) [32] |
26 ноября 2020 г. | Публикация Octave 6.1.0 (предпочтителен QT5, Qt 4.x устарел для удаления в версии 7) [33] |
20 февраля 2021 г. | Публикация Octave 6.2.0 (предпочтительно QT5), исправление ошибок, улучшенная поддержка синтаксиса Matlab. [34] |
6 апреля 2022 г. | Публикация Octave 7.1.0 (предпочтительно QT5), улучшенная графическая часть и совместимость с Matlab. [35] |
28 июля 2022 г. | Публикация Octave 7.2.0 (предпочтительно QT5), выпуск с исправлением ошибок [36] |
2 ноября 2022 г. | Публикация Octave 7.3.0 (предпочтительно QT5), выпуск с исправлением ошибок [37] |
7 марта 2023 г. | Публикация Octave 8.1.0, улучшенной графической части и совместимости с Matlab. [38] |
13 апреля 2023 г. | Публикация Octave 8.2.0, релиз с исправлением ошибок [39] |
8 августа 2023 г. | Публикация Octave 8.3.0, релиз с исправлением ошибок [40] |
5 ноября 2023 г. | Публикация Octave 8.4.0, релиз с исправлением ошибок [7] |
14 марта 2024 г. | Публикация Octave 9.1.0, общие сведения, совместимость с Matlab и улучшения графики. [41] |
События [ править ]
Помимо использования на настольных компьютерах для персональных научных вычислений, Octave используется в научных кругах и промышленности. Например, Octave использовался на огромном параллельном компьютере в Питтсбургском суперкомпьютерном центре для обнаружения уязвимостей, связанных с угадыванием номеров социального страхования. [42]
Ускорение с помощью OpenCL или CUDA также возможно с использованием графических процессоров. [43]
Технические подробности [ править ]
- Octave написан на C++ с использованием стандартной библиотеки C++ .
- Octave использует интерпретатор для выполнения языка сценариев Octave.
- Octave расширяется с помощью динамически загружаемых модулей.
- Интерпретатор Octave имеет графический движок на основе OpenGL для создания графиков, графиков и диаграмм, а также их сохранения или печати. В качестве альтернативы gnuplot . для той же цели можно использовать
- Octave включает графический интерфейс пользователя (GUI) в дополнение к традиционному интерфейсу командной строки (CLI); см . в разделе #Пользовательские интерфейсы . подробности
Октава, язык [ править ]
Язык Octave — это интерпретируемый язык программирования. Это структурированный язык программирования (похожий на C ), который поддерживает множество общих функций стандартной библиотеки C , а также некоторые UNIX . системные вызовы и функции [44] Однако он не поддерживает передачу аргументов по ссылке. [45] хотя аргументы функции копируются при записи, чтобы избежать ненужного дублирования.
Программы Octave состоят из списка вызовов функций или сценария . Синтаксис основан на матрицах и предоставляет различные функции для матричных операций. Он поддерживает различные структуры данных и позволяет объектно-ориентированное программирование . [46]
Его синтаксис очень похож на MATLAB, а тщательное программирование сценария позволит ему работать как в Octave, так и в MATLAB. [47]
Поскольку Octave доступен под лицензией GNU General Public License , его можно свободно изменять, копировать и использовать. [8] Программа работает в Microsoft Windows и большинстве Unix и Unix-подобных операционных системах , включая Linux , Android и macOS . [48] [49] [50]
Примечательные особенности [ править ]
Дополнение имени команды и переменной [ править ]
Ввод символа TAB в командной строке приводит к тому, что Octave пытается завершить имена переменных, функций и файлов (аналогично Bash в завершению табуляции ). Octave использует текст перед курсором в качестве начальной части имени для завершения. [51]
История команд [ править ]
При интерактивной работе Octave сохраняет введенные команды во внутреннем буфере, чтобы их можно было вызывать и редактировать.
Структуры данных [ править ]
Octave включает ограниченную поддержку организации данных в структурах. В этом примере мы видим структуру х с элементами а , группа c (целое число, массив и строка соответственно):
октава : 1 > х . а = 1 ; Икс . б знак равно [ 1 , 2 ; 3 , 4 ]; Икс . с = «строка» ;
октава : 2 > х . a
ans = 1
октава : 3 > x . b
ans =
1 2
3 4
октава : 4 > x . c
ans = строки
октава : 5 > x
x =
скалярная структура содержащая поля , :
a = 1
b =
1 2
3 4
c = строка
Короткое замыкание логических операторов [ править ]
Октава &&
и ||
логические операторы вычисляются по принципу короткого замыкания (как соответствующие операторы в языке C ), в отличие от поэлементных операторов. &
и |
.
Операторы увеличения и уменьшения [ править ]
Octave включает в себя C-подобные операторы увеличения и уменьшения. ++
и --
как в префиксной, так и в постфиксной формах.
Octave также выполняет расширенное присваивание , например x += 5
.
Расслабьтесь-защитите [ править ]
Octave поддерживает ограниченную форму обработки исключений, смоделированную по образцу unwind_protect
из Лиспа . Общая форма блока unwind_protect выглядит следующим образом:
unwind_protect
тело
unwind_protect_cleanup
очистка
end_unwind_protect
Как правило, GNU Octave распознает завершение данного block
либо ключевое слово end
(который совместим с языком MATLAB) или более конкретное ключевое слово endblock
или, в некоторых случаях, end_block
. Как следствие, unwind_protect
блок можно завершить либо с помощью ключевого слова end_unwind_protect
как в примере, или с помощью более переносимого ключевого слова end
.
Очистительная часть блока выполняется всегда. вызывает исключение В случае, если часть тела , очистка выполняется непосредственно перед распространением исключения за пределы блока. unwind_protect
.
GNU Octave также поддерживает другую форму обработки исключений (совместимую с языком MATLAB):
попробуйте
тело
перехватить
исключение_обработку
конца
Эта последняя форма отличается от unwind_protect
блокировать двумя способами. Во-первых, Exception_handling выполняется только тогда, когда тело вызывает исключение . вторых, после выполненияException_handling Во - исключение не распространяется за пределы блока (если только rethrow( lasterror )
оператор явно вставлен в код исключения_обработки ).
Списки аргументов переменной длины [ править ]
Octave имеет механизм обработки функций, которые принимают неопределенное количество аргументов без явного верхнего предела. Чтобы указать список из нуля или более аргументов, используйте специальный аргумент varargin
в качестве последнего (или единственного) аргумента в списке. varargin
представляет собой массив ячеек, содержащий все входные аргументы.
функция s = плюс ( вараргин ),
если ( наргин == 0 )
s = 0 ;
else
s = вараргин { 1 } + плюс ( вараргин { 2 : наргин });
конец
конец
Списки возврата переменной длины [ править ]
Функцию можно настроить на возврат любого количества значений, используя специальное возвращаемое значение. varargout
. Например:
функция varargout = multiassign ( data )
для k = 1 : nargout
varargout { k } = data (:, k );
конец
конец
Интеграция с C++ [ править ]
Также возможно выполнить код Octave непосредственно в программе C++. Например, вот фрагмент кода для вызова rand([10,1])
:
#include <octave/oct.h>
...
ColumnVector NumRands ( 2 );
NumRands ( 0 ) = 10 ;
Число рандов ( 1 ) = 1 ;
Octave_value_list f_arg , f_ret ;
f_arg ( 0 ) = значение октавы ( NumRands );
f_ret = feval ( «ранд» , f_arg , 1 );
Матрица unis ( f_ret ( 0 ) .matrix_value ());
Код C и C++ можно интегрировать в GNU Octave путем создания файлов Oct или использования MEX-файлов, совместимых с MATLAB .
Совместимость с MATLAB [ править ]
Octave был создан с учетом совместимости с MATLAB и имеет множество общих с MATLAB функций:
- Матрицы как фундаментальный тип данных.
- Встроенная поддержка комплексных чисел.
- Мощные встроенные математические функции и обширные библиотеки функций.
- Расширяемость в виде определяемых пользователем функций.
Octave рассматривает несовместимость с MATLAB как ошибку ; следовательно, его можно считать клоном программного обеспечения , который не нарушает авторские права на программное обеспечение согласно Lotus против Borland судебному делу .
Скрипты MATLAB из репозитория MathWorks FileExchange в принципе совместимы с Octave. Однако, хотя они часто предоставляются и загружаются пользователями под совместимой с Octave и надлежащей с открытым исходным кодом лицензией BSD FileExchange , Условия использования запрещают любое использование, кроме проприетарного MATLAB MathWorks. [52] [53] [54]
Совместимость синтаксиса [ править ]
Есть несколько целенаправленных, хотя и незначительных, синтаксических дополнений. Архивировано 26 апреля 2012 г. на Wayback Machine :
- Строки комментариев могут начинаться с символа # или символа %;
- Поддерживаются различные C операторы ++ , -- , += , *=, /=;
- На элементы можно ссылаться без создания новой переменной посредством каскадной индексации, например, [1:10](3);
- Строки могут определяться с помощью символа двойной кавычки ", а также символа одинарной кавычки;
- Когда тип переменной одинарный (число с плавающей запятой одинарной точности), Octave вычисляет « среднее значение » в однодоменном (MATLAB в двухдоменном ), что быстрее, но дает менее точные результаты;
- Блоки также могут завершаться более конкретными ключевыми словами структуры управления , например, endif, endfor, end while и т. д.;
- Функции могут быть определены в сценариях и в командной строке Octave;
- Наличие цикла do-until (аналог do- while в C).
Совместимость функций [ править ]
Многие, но не все, из многочисленных функций MATLAB доступны в GNU Octave, некоторые из них доступны через пакеты Octave Forge . Функции, доступные как часть основных пакетов Octave или Forge, перечислены в Интернете. Архивировано 14 марта 2024 г. на Wayback Machine .
Список недоступных функций включен в функцию Octave. __unimplemented.m__
. Нереализованные функции также перечислены во многих пакетах Octave Forge в Octave Wiki .
При вызове нереализованной функции отображается следующее сообщение об ошибке:
Octave : 1 > руководства
Предупреждение : функция «Guide» еще реализована не , в Octave .
Пожалуйста прочитайте < http : // www . октава . орг / отсутствует . html > чтобы узнать как можно , добавить недостающую функциональность .
ошибка : «руководство» не определено рядом со строкой 1, столбцом 1
Пользовательские интерфейсы [ править ]
Octave поставляется с официальным графическим пользовательским интерфейсом (GUI) и интегрированной средой разработки (IDE) на основе Qt . Он доступен начиная с Octave 3.8. [17] и стал интерфейсом по умолчанию (через интерфейс командной строки ) с выпуском Octave 4.0. [20] Он был хорошо принят участником EDN, который написал: «[Octave] теперь имеет очень работоспособный графический интерфейс» при обзоре нового на тот момент графического интерфейса в 2014 году. [55]
Также было разработано несколько сторонних графических интерфейсов, например ToolboX, для обучения программированию.
Приложения с графическим интерфейсом [ править ]
С помощью кода Octave пользователь может создавать приложения с графическим интерфейсом. См. «Разработка графического пользовательского интерфейса (GNU Octave (версия 7.1.0)») . Ниже приведены несколько примеров:
Кнопка, элемент управления редактированием, флажок
# создаем фигуру и панель на ней
f = figure ;
# создаем кнопку (стиль по умолчанию)
b1 = uicontrol ( f , "string" , "A Button" , "position" ,[ 10 10 150 40 ]);
# создаем элемент управления редактированием
e1 = uicontrol ( f , «style» , «edit» , «string» , «editable text» , «position» , [ 10 60 300 40 ]);
# создаем флажок
c1 = uicontrol ( f , "style" , "checkbox" , "string" , "a checkbox" , "position" , [ 10 120 150 40 ]);
Текстовое окно
подсказка = { «Ширина» , «Высота» , «Глубина» };
по умолчанию = { "1,10" , "2,20" , "3,30" };
строкиколс = [ 1 , 10 ; 2 , 20 ; 3 , 30 ];
dims = inputdlg ( подсказка , «Введите размеры поля» , rowscols , defaults );
Список с ящиками сообщений.
my_options = { "Предмет" , "еще один" , "еще один" };
[ sel , ok ] = listdlg ( «ListString» , my_options , «SelectionMode» , «Multiple» );
if ( ok == 1 )
msgbox ( «Вы выбрали:» );
для i = 1 : numel ( sel )
msgbox ( sprintf ( «\t%s» , my_options { sel ( i )}));
endfor
else
msgbox ( "Вы отменили." );
конец
Радио-кнопки
# создаем фигуру и панель на ней
f = figure ;
# создаем группу кнопок
gp = uibuttongroup ( f , "Position" , [ 0 0.5 1 1 ])
# создаем группу кнопок
b1 = uicontrol ( gp , "style" , "radiobutton" , "string" , "Choice 1 " " , "Позиция" , [ 10 150 100 50 ]);
b2 = uicontrol ( gp , «стиль» , «радиокнопка» , «строка» , «Выбор 2» , «Позиция» , [ 10 50 100 30 ]);
# создаем кнопку не в группе
b3 = uicontrol ( f , "style" , "radiobutton" , "string" , "Not in the group" , "Position" , [ 10 50 100 50 ]);
Пакеты [ править ]
Octave также имеет множество доступных пакетов. Эти пакеты расположены по адресу Octave-Forge Octave Forge — Packages или Github Octave Packages . Любой желающий также может создавать и поддерживать пакеты.
Сравнение с другим подобным программным обеспечением [ править ]
Другие бесплатные альтернативы MATLAB включают Scilab и FreeMat . [56] [57] [58] [59] Octave более совместим с MATLAB, чем Scilab. [56] [60] [61] и FreeMat не обновлялся с июня 2013 года. [62]
См. также [ править ]
- Список программного обеспечения для численного анализа
- Сравнение программного обеспечения для численного анализа
- Список статистических пакетов
- Список числовых библиотек
Примечания [ править ]
Ссылки [ править ]
- ^ Рик (10 июня 2015 г.). "contributors.in" . Проверено 14 июня 2015 г.
- ^ " Постоянная разработка началась весной 1992 года. Первый альфа-релиз состоялся 4 января 1993 года, а версия 1.0 вышла 17 февраля 1994 года." " .
- ^ «Выпущена GNU Octave 9.1.0» . 14 марта 2024 г. Проверено 18 марта 2024 г.
- ^ «Здание – Октава» . wiki.octave.org . ГНУ . Проверено 1 мая 2018 г.
- ^ «Баскский, белорусский, каталанский, китайский, голландский, английский, французский, немецкий, венгерский, итальянский, японский, латышский, португальский (Бразилия), португальский (Португалия), русский, испанский, турецкий, украинский» . hg.savannah.gnu.org .
- ^ «О GNU Octave» . www.gnu.org . ГНУ . Проверено 1 мая 2018 г.
- ^ Перейти обратно: а б «Выпущена GNU Octave 8.4.0» . Octave.org . 05.11.2023 . Проверено 20 ноября 2023 г.
- ^ Перейти обратно: а б Итон, Джон В. «Об Октаве» . Проверено 28 июня 2009 г.
- ^ «GNU Октава Версия 1» . www.gnu.org .
- ^ «GNU Октава Версия 2» . www.gnu.org .
- ^ "Архив новостей" . www.gnu.org . 31 декабря 2012 г.
- ^ «GNU Октава Версия 3» . www.gnu.org .
- ^ «GNU Octave версии 3.2» . www.gnu.org .
- ^ «GNU Octave версии 3.4» . www.gnu.org .
- ^ «GNU Octave версии 3.6» . www.gnu.org .
- ^ «Выпущена GNU Octave 3.6.4» . www.gnu.org . 21 февраля 2013 г.
- ^ Перейти обратно: а б «GNU Octave версии 3.8» . www.gnu.org .
- ^ «Выпущена GNU Octave 3.8.0» . www.gnu.org . 31 декабря 2013 г.
- ^ «Выпущена GNU Octave 3.8.1» . www.gnu.org . 4 марта 2014 г.
- ^ Перейти обратно: а б «GNU Octave версии 4.0» . www.gnu.org .
- ^ «Выпущена GNU Octave 4.0.0» . www.gnu.org . 29 мая 2015 г.
- ^ «Выпущена GNU Octave 4.0.1» . www.gnu.org . 23 марта 2016 г.
- ^ «Выпущена GNU Octave 4.0.3» . www.gnu.org . 2 июля 2016 г.
- ^ «Выпущена GNU Octave 4.2.0» . 14 ноября 2016 г.
- ^ «GNU Octave версии 4.2» . www.gnu.org .
- ^ «Выпущена GNU Octave 4.2.1» . www.gnu.org . 24 февраля 2017 г.
- ^ «Выпущена GNU Octave 4.2.2» . www.gnu.org . 13 марта 2018 г.
- ^ «GNU Octave версии 4.4» . www.gnu.org .
- ^ «Выпущена GNU Octave 4.4.0» . www.gnu.org . 30 апреля 2018 г.
- ^ «Выпущена GNU Octave 4.4.1» . www.gnu.org . 9 августа 2018 г.
- ^ «GNU Octave версии 5» . www.gnu.org .
- ^ «Выпущена GNU Octave 5.2.0» . www.gnu.org . 31 января 2020 г.
- ^ «Выпущена GNU Octave 6.1.0» . www.gnu.org . 26 ноября 2020 г.
- ^ «Выпущена GNU Octave 6.2.0» . www.gnu.org . 20 февраля 2021 г.
- ^ «Выпущена GNU Octave 7.1.0» . www.gnu.org . 6 апреля 2022 г.
- ^ «Выпущена GNU Octave 7.2.0» . Octave.org . 28 июля 2022 г.
- ^ «Выпущена GNU Octave 7.3.0» . Octave.org . 2 ноября 2022 г.
- ^ «Выпущена GNU Octave 8.1.0» . Octave.org . 7 марта 2023 г.
- ^ «Выпущена GNU Octave 8.2.0» . Octave.org . 13 апреля 2023 г.
- ^ «Выпущена GNU Octave 8.3.0» . Octave.org . 8 августа 2023 г.
- ^ «GNU Octave версии 9» . Octave.org . Проверено 25 марта 2024 г.
- ^ «Выявление уязвимостей номеров социального страхования на основе суперкомпьютеров» . 8 июля 2009 г. Архивировано из оригинала 29 февраля 2012 г.
- ^ «Внутреннее ускорение GNU Octave» . Блог разработчиков NVIDIA . 5 июня 2014 г.
- ^ «GNU Octave — Управление подпроцессами» . 14 ноября 2008 г. Архивировано из оригинала 7 января 2009 г. Проверено 28 января 2009 г.
- ^ «ГНУ Октава» . Проверено 28 января 2009 г.
- ^ «Сводка важных изменений, видимых пользователю, для версии 3.2» . Проверено 5 января 2012 г.
- ^ «Часто задаваемые вопросы: совместимость с MATLAB» . Архивировано из оригинала 21 ноября 2011 г. Проверено 4 апреля 2009 г.
- ^ «Часто задаваемые вопросы: Получение Октавы» . Архивировано из оригинала 21 ноября 2011 г. Проверено 4 апреля 2009 г.
- ^ «Верх (GNU Octave (версия 6.3.0))» . Octave.org .
- ^ «Октава для Android — Октава» . wiki.octave.org . Проверено 23 августа 2021 г.
- ^ Итон, Джон В. «Позвольте печатать Readline за вас» . Справочное руководство GNU Octave . Архивировано из оригинала 12 февраля 2018 г. Проверено 29 июля 2016 г.
- ^ «FAQ – Октава» . wiki.octave.org . Проверено 5 декабря 2022 г.
- ^ «Центральные условия использования MATLAB» . www.mathworks.com . Проверено 5 декабря 2022 г.
- ^ «Часто задаваемые вопросы по лицензированию обмена файлами» . www.mathworks.com . Проверено 5 декабря 2022 г.
- ^ Хагеман, Стив (7 февраля 2014 г.). «GNU Octave берет высокую ноту» . ЭДН .
- ^ Перейти обратно: а б Траппенберг, Томас (2010). Основы вычислительной нейронауки . Издательство Оксфордского университета. п. 361. ИСБН 978-0-19-956841-3 .
- ^ Мухаммед, А; Зализняк, В (2011). Практические научные вычисления . Издательство Вудхед . п. 3 . ISBN 978-0-85709-226-7 .
- ^ Мегрей, Бернард А.; Мокснесс, Эрленд (2008). Компьютеры в исследованиях рыболовства . Springer Science & Business Media. п. 345 . ISBN 978-1-4020-8636-6 .
- ^ Капуно, Рауль Раймонд (2008). Программирование для инженеров-химиков с использованием C, C++ и MATLAB . Издательство Джонс и Бартлетт. п. 365. ИСБН 978-1-934015-09-4 .
- ^ Герман, Рассел Л. (2013). Курс математических методов для физиков . ЦРК Пресс. п. 42. ИСБН 978-1-4665-8467-9 .
- ^ Ваувер, Ален Ванде; Сосес, Филипп; Вилас, Карлос (2014). Моделирование моделей ODE/PDE с помощью MATLAB, Octave и Scilab: научные и инженерные приложения . Спрингер. стр. 114–115. ISBN 978-3-319-06790-2 .
- ^ «ФриМэт» . freemat.sourceforge.net . Проверено 22 февраля 2020 г. .
Дальнейшее чтение [ править ]
- Хансен, Йеспер Шмидт (июнь 2011 г.). ГНУ Октава. Руководство для начинающих . Пакт Паблишинг . ISBN 978-1-849-51332-6 .
Внешние ссылки [ править ]
![](http://upload.wikimedia.org/wikipedia/en/thumb/4/4a/Commons-logo.svg/30px-Commons-logo.svg.png)
![](http://upload.wikimedia.org/wikipedia/commons/thumb/d/df/Wikibooks-logo-en-noslogan.svg/40px-Wikibooks-logo-en-noslogan.svg.png)
- Программное обеспечение для обработки изображений
- Языки программирования массивов
- Кроссплатформенное бесплатное программное обеспечение
- Программное обеспечение для анализа данных
- Программное обеспечение для интеллектуального анализа данных и машинного обучения
- Бесплатное образовательное программное обеспечение
- Бесплатное математическое программное обеспечение
- Бесплатное программное обеспечение, написанное на C++.
- Программное обеспечение проекта GNU
- Программное обеспечение для численного анализа для Linux
- Программное обеспечение для численного анализа для macOS
- Программное обеспечение для численного анализа для Windows
- Языки числового программирования
- Научное программное обеспечение, использующее Qt
- Программное обеспечение, использующее Qt