Наша задача - познакомиться с инструментами, применяемыми в научных вычислениях (и не только). К числу наиболее известных из них сегодня можно отнести Maple, Wolfram, Octave, Matlab и Mathcad (на сентябрь 2024 года последний несколько утратил популярность). В качестве демонстрационного выбран пакет Matlab версии R2020b.
Кроме бесплатно распространяемого Octave (для которого имеется онлайн-версия) все вышеперечисленные пакеты являются проприетарными. Что касается Octave, то его основным назначением является замена весьма мощному пакету Matlab. В настоящий момент сказать, что это полностью возможно, нельзя, но по ряду причин в этом направлении ведется активная работа. (Следует заметить, что, хотя разработка ПО с открытым исходным кодом началась существенно позже разработки коммерческих приложений, в настоящее время Octave по некоторым параметрам вполне может не уступать Matlab'у.)
Пакет Matlab основан на трех важных идеях:
использовании векторных вычислений;
использовании гиперматриц;
возможности расширения функционала за счет модульности (применения т. н. toolbox'ов)
(пакет Octave повторяет их, но пока с запаздыванием). В отличие от Matlab, Octave поддерживает русскоязычный интерфейс программы.
Изучение Matlab попутно позволяет познакомиться с основами программирования. Код, написанный на Matlab переносится на Octave и обратно (причем, хотя полной совместимости нет, обычно ее отсутствие считается ошибкой).
* * *
В отношении применения прикладных программ необходимо дать две группы важных замечаний.
Первая группа содержит замечания, которые относятся к "прикладному" характеру программ. Знакомство с Matlab мы, по возможности, будем сопровождать примерами решений задач из области численных методов или вычислительной математики. Читатель не раз увидит, что далеко не всегда программа дает правильный и (или) ожидаемый результат - даже "правильно составленная" (по крайней мере на первый взгляд)! Итак, "и в обучении, и в бою" важно помнить, что:
при работе с математическими пакетами операции "математического мира" (сложение, дифференцирование, интерполяция и другие) выполняются с помощью конкретного инструмента, имеющего свои "технические характеристики" (в том числе предельные) - это должно напоминать читателю, что, как и любой инструмент, ЭВМ в целом и конкретную программу в частности требуется применять осмысленно и с осторожностью;
численные методы отвечают на вопрос "как перенести теорию на практику?" (ответом на который является некоторый алгоритм), в то время как вычислительная математика занимается вопросом "как реализовать алгоритм на ЭВМ?". Зачастую деление между этими разделами весьма условное, так как ответ на один вопрос зачастую довольно сильно влияет на ответ на второй (вплоть до полного пересмотра алгоритма) - это должно напоминать читателю, что перед написанием какой бы то ни было программы задача требует предварительного всестороннего исследования!
Вторая группа содержит замечания, которые относятся к "применению программ". Работа в Matlab подразумевает программирование численных методов, т. е. написание программного кода. Если Вы только начинаете свой путь в программировании, настоятельно рекомендуется сразу учиться писать "чистый код" - понятие, с которым можно познакомиться по книге Чистый код. Создание, анализ и рефакторинг (Р. Мартин).
Хотя книга ориентирована на тех, кто пишет объектно-ориентированные приложения (а не программирует численные методы), ряд советов все же оказывается очень полезным (проверено на опыте). Рекомендуется прочитать главы 1-5 (и сделать краткий конспект, выписав ключевые соображения), а также главу 17.