Отличия систем компьютерной алгебры от традиционных систем программирования
Освоить входные языки систем компьютерной алгебры гораздо проще, чем входные языки традиционных систем программирования. Действительно, почти во всех системах компьютерной алгебры основным является диалоговый режим, в котором новичок может вводить короткие инструкции и сразу же получать результаты. Сначала требуется знать всего лишь несколько функций, которые позволят представить задачу в виде, очень похожем на ее математическую формулировку. Даже если при переписывании задачи (переформулировке) будут допущены ошибки, в коротких инструкциях в интерактивном режиме их легко обнаружить. А быстрое получение результатов, получение которых с помощью карандаша и бумаги требует десятилетий, а подчас для человека вообще непосильно, воодушевляет пользователя и снимает многие традиционные проблемы, связанные с психологией программирования. И очень часто этого вполне достаточно для решения задачи.
Так что синтаксические тонкости обычно легко осваиваются в процессе работы. Правда, в связи с тем, что с помощью таких систем часто решаются исследовательские задачи, где заранее неизвестен даже приблизительный порядок ответа, иногда приходится разбираться, как представляются и обрабатываются данные.
Среди исследовательских задач часто встречаются такие, в которых очень трудно предсказать время вычисления и размер результатов. В таких задачах очень часто приходится искать более оптимальный метод их решения. Конечно, результаты простых алгебраических вычислений получаются почти моментально, и все идет отлично. Но если это не так, то в исследовательских задачах с увеличением их сложности (с ростом некоторого не всегда очевидного параметра) требуемое время и память возрастают зачастую экспоненциально. Кроме того, оценка временных затрат на вычисления далеко не всегда очевидна. Поэтому при решении исследовательских задач иногда очень важно владеть эффективным стилем программирования и способностью предвидеть объем вычислений.
Системы компьютерной алгебры часто представляют собой примеры систем с искусственным интеллектом. И поэтому их поведение иногда трудно предсказать. Человек далеко не всегда может соперничать с машиной при поиске решения по заданным правилам в достаточно полно определенном массиве данных. Например, уже сейчас далеко не просто предсказать исход шахматной партии между машиной и чемпионом по шахматам. Машина может выиграть и у чемпиона.
Как начать
Каждый человек интуитивно вырабатывает свой стиль работы с системами искусственного интеллекта. Можно, например, рассматривать систему компьютерной алгебры просто как достаточно удобный графический калькулятор (инструмент). Чтобы научиться использовать систему Mathematica таким образом, прочтите соответствующую главу из данной книги. Затем можно рассматривать систему Mathematica как помощника в решении небольших и несложных примеров и задач из учебников. Для этого придется прочитать уже не одну, а несколько глав. Переходя к более сложным задачам, необходимо осваивать теорию их решения и одновременно читать книги вроде этой. Однако, приступая к решению настоящих исследовательских задач, будьте готовы столкнуться с рядом проблем: то компьютер слишком долго считает, то не хватает памяти, то получается формула на 5-10 страниц, а то машина выдает непредвиденный ответ. Можете рассматривать данную книгу как упорядоченный набор примеров, правил, советов и комментариев, которые позволят обойти некоторые ямы и ловушки на этом пути.
Решив воспользоваться системой компьютерной алгебры, вы, возможно, еще раздумываете, какую из них выбрать. Это очень важный вопрос, но ответить на него правильно еще важнее. Вот мой ответ. Хотя почти все современные системы компьютерной алгебры очень и даже очень хороши, выбрать нужно наилучшую. Если все же сомневаетесь, какую, прочтите ее название на обложке данной книги.