Полезные сервисы, не требующие скачивания и установки.
На сегодняшний день наиболее популярным графическим сервисом является desmos.com (имеется краткое руководство).
Примеры построения 2D графиков в desmos (в скобках указаны параметры, на стрелки рядом с которыми можно нажать и посмотреть анимацию):
тригонометрический ряд Фурье: пример 1 (m), пример 2 (m), пример 3 (m);
интеграл с переменным верхним пределом: пример 1, пример 2 (a);
визуализация неравенств: пример 1.
Примеры построения 3D графиков (на момент публикации, 08.10.2024, сервис работает в бета-режиме):
гиперболический параболоид; (пример седловой поверхности);
функция плотности двумерного нормального распределения, умноженная для наглядности на 10.
Помимо desmos'а для построения 3D графиков можно использовать сервис GeoGebra (здесь есть руководство типа "справка"). К сожалению, перевода на русский для руководства не найдено.
Сервис не позволяет предоставлять доступ к сделанным результатам (без регистрации допускается только экспорт в виде картинки), поэтому в качестве примеров можно скопировать и вставить следующие выражения:
x^(2)+y^(2);
x^(2)+y^(2)+(z-8)^(2)=9
и посмотреть на результат.
В категорию "вычислительных сервисов" входят онлайн-сервисы, предназначенные для решения пределов, разыскания производных и интегралов (неопределенных и определенных), решения дифференциальных уравнений и некоторых других задач. Сервисы бесплатны, предоставляют подробное (пошаговое) решение и имеют хорошее оформление:
Важно: эти инструменты предназначены для помощи студенту (например, для самопроверки) - не следует ими злоупотреблять! Помните: основная задача обучения - сделаться самодостаточным перед неизвестностью, т. е. научиться получать правильный ответ тогда, когда контроля со стороны нет.
Кроме того, несмотря на то, что символьные вычисления достигли впечатляющих вершин, они все еще не так совершенны, как хотелось бы. Вот тому пример: если полагаться исключительно на расчеты компьютера, то в примере 3 тригонометрического ряда Фурье ни один из сервисов не выдаст правильного результата!
Если вы хотите стать хорошим программистом (математика здесь выступает как обязательное приложение), то это немыслимо без практики. Необходимо совершенствовать навыки владения инструментом (языком программирования и средой разработки) и решать задачи.
Скажем несколько слов для начинающих. Серьезное программирование (на хорошем уровне) - дело сложное, но очень интересное. Представляется разумным первое знакомство с программированием проводить с использованием классического С++, но, безусловно, читатель может выбрать язык, который ему больше по душе. Дать какой-либо совет по выбору языка трудно: во многих случаях точка зрения специалиста обусловлена его личными предпочтениями. Можно только сказать, что одни языки больше подходят для высоконагруженных вычислений (Fortran, С++), а другие - для разработки пользовательских приложений (Python, Kotlin).
Почему знакомство рекомендовано начинать именно с С++? Потому что при таком подходе неизбежен обзор вопросов, знание которых составляет базу для программиста: как устроена программа? что такое типы данных? и подобных им. Начинать же знакомство рекомендуется, изучая теорию и практику параллельно. Дело в том, что изучение только "теоретических" вопросов (вроде устройства программы) - это долго и поначалу не так важно (для начала важно не потерять интерес; детали необходимы для дальнейшего). Изучение только "практических" вопросов не сделает обучающегося хорошим программистом.
Вот несколько сервисов, которые предлагают свою помощь в деле профессионального роста:
Среди бесплатных курсов можно найти хорошие варианты, в частности, Введение в программирование (С++) от Яндекса и ВШЭ и Программирование на языке С++ от Computer Science Center.
На сайте представлен банк задач на самые разные темы: массивы, строки, хеш-таблицы, динамическое программирование, математика, сортировки и многое другое. Код решения пишется прямо на сайте (не нужно скачивать среду разработки); имеется возможность писать код на большом количестве различных языков. Задачи на каждую тему поделены по уровням сложности.
Бесплатные онлайн-тренировки по алгоритмам. Дивизион В, как пишут авторы курса, подойдет "для тех, кто хочет получить базовые знания по алгоритмам и подготовиться к трудоустройству на работу". Здесь представлены лекции, домашние задания и разбор задач. Для более подготовленных слушателей есть бесплатный курс Алгоритмы и структуры данных.
Если нужно что-то более серьезное.
В разработке
Благодаря низкому порогу вхождения, большую популярность сегодня набирает язык программирования Python - в отличие от C++ он требует намного меньше усилий, для того чтобы начать разрабатывать прикладные приложения. Важно также и то, что Python - полностью бесплатный и открытый язык программирования, который может быть использован как для личных целей, так и в коммерческих проектах (без опасения нарушения патентной чистоты).
Скачать Python можно с официального сайта. В качестве среды разработки можно выбрать Visual Studio Code или PyCharm. (Обе они бесплатные, но есть VSC собирает много телеметрии, что не всем нравится.)
Большое количество бесплатных курсов по Python можно найти в сети, например, на том же Stepik. Для начинающих подойдут, например, следующие:
В отличие от разработки приложений, для проведения научных вычислений больше подходят специализированные программы, например, Wolfram, Maple или Matlab - однако все они платные. Здесь на помощь приходит свободно распространяемая программа Octave - подробности тут.
Знакомство с ней особенно рекомендуется студентам младших курсов, поскольку использование программ подобного типа серьезно облегчает выполнение любых лабораторных работ.
По поводу использования программ вроде Octave или Matlab часто можно встретить мнение, что расчеты можно проводить где угодно - мол, если владеешь С++ или Python, то все остальное не нужно. Эта позиция верна лишь до некоторых пределов, причем весьма скромных - неспроста в науке существуют дисциплины "Численные методы" и "Вычислительная математика"!
Если Вас заинтересовало, почему это так, рекомендуется познакомиться с главой 1 книги Численные методы и математическое обеспечение (Каханер Д., Моулер К., Нэш С.) (см. раздел 1.3 Математическое обеспечение. Пример: квадратный корень из суммы квадратов). В качестве другого примера укажем, что по мнению пионеров в области прикладных вычислений (достаточно сказать, что К. Моулер является одним из разработчиков системы Matlab) в 1997 году "Несмотря на элементарный характер квадратного уравнения, можно с большой долей уверенности сказать, что (по крайней мере на момент написания этой книги) во всем мире имелось не более пяти машинных программ, удовлетворяющих намеченным выше критериям."