Укрощение бесконечности. История математики от первых чисел до теории хаоса — страница 61 из 66


Метод Ньютона для численного решения уравнения


Вычислительные машины выполняли не только простые арифметические действия, поскольку многие научные расчеты могут быть численно реализованы как длинный ряд арифметических операций. Один из первых численных методов, позволявших решать уравнения с достаточно высокой точностью, был изобретен еще Ньютоном и стал известен как метод Ньютона. Он решает уравнение f(x) = 0 с помощью вычисления ряда последовательных приближений к решению, где каждое следующее уточняет предыдущее, но основано на нем. От некоего начального предположения, обозначим его как х1, улучшаем наши приближения корней x2, x3, …, xn, xn + 1 согласно формуле:



где f´ – производная от f. Метод основан на геометрии кривой y = f(x) рядом с решением. Точка xn + 1 находится там, где касательная прямая к точке xn пересекается с осью X. Как показано на графике, она ближе к решению – точке x, чем исходная точка.

АВГУСТА АДА КИНГ, ГРАФИНЯ ЛАВЛЕЙС 1815–1852

Августа Ада была дочерью поэта лорда Байрона и Анны Милбенк. Ее родители расстались через месяц после рождения девочки, и она больше никогда не видела отца. Ребенком она уже показала способности к математике; в отличие от своих современников, леди Байрон сочла это отличным упражнением для развития ума своей дочки и поощряла ее в этом увлечении. В 1833 г. Ада познакомилась с Чарльзом Бэббиджем на званом обеде, и очень скоро, побывав на демонстрации его прототипа аналитической машины, девушка нашла ее восхитительной и моментально разобралась в ее устройстве. Она стала графиней Лавлейс, когда в 1838 г. ее муж получил титул графа.

В 1843 г. к своему переводу статьи Луиджи Менабреа «Заметки об аналитической машине Чарльза Бэббиджа» Ада добавила небольшое приложение, впоследствии ставшее образцом программ, разработанных ею собственноручно. Она писала, что «отличительной особенностью аналитической машины… является использование в ней принципа управления с помощью перфокарт, изобретенного Жаккардом для изготовления самых сложных узоров для парчовых тканей. Можно сказать, что аналитическая машина сплетает алгебраические формулы так же, как ткацкий станок Жаккарда – цветы и листья».

В 36 лет у женщины развился рак матки, и после долгих мучений она умерла от кровопускания на руках у своих врачей.

Вторым важным приложением численных методов стало решение дифференциальных уравнений. Предположим, мы решаем уравнение



и нам дано, что x = x0 в момент времени t = 0. Согласно Эйлеру, простейший способ – аппроксимация dx/dt с помощью



где ε очень мала. Тогда аппроксимация дифференциального уравнения принимает вид:

x(t + ε) = x(t) + ε f(x(t)).

Начиная с x(0) = x0 мы последовательно найдем значения f(ε), f(2ε), f(3ε) – в общем, f(nε) для любого целого n> 0. Обычное значение ε, скажем, 10–6. Миллион итераций (повторов) формулы покажет x(1), следующий миллион x(2) и т. д. Для современных компьютеров миллион вычислений – пустяк, и это уже вполне практичный метод.

Однако метод Эйлера оказался слишком прост для ученых, и пришлось изобрести множество улучшений. Самым известным стал целый класс методов Рунге – Кутты, названный в честь немецких математиков Карла Рунге и Мартина Кутты, впервые предложивших их в 1901 г. Один из них, так называемый метод Рунге – Кутты четвертого порядка, широко используется в инженерии, прикладной и теоретической математике.

Нужды современной нелинейной динамики породили несколько сложнейших методов, позволяющих избежать накопления ошибок даже в длительных временных периодах, которые сохраняют определенную структуру, связанную с точным решением. Например, в механической системе без трения полная механическая энергия сохраняется. И есть возможность настроить численный метод так, чтобы на каждом шагу энергия сохранялась точно. Такая процедура исключает риск, что вычисленное решение будет мало-помалу отклоняться от точного, подобно тому как маятник постепенно останавливается, теряя энергию.

ЧТО ЧИСЛЕННЫЕ МЕТОДЫ ДАЛИ ИМ

Ньютону не только пришлось разобраться в природе вычислений – ему удалось изобрести эффективные методы вычислений. Он широко внедрил степенные ряды для описания функций, потому что научился дифференцировать и интегрировать эти ряды одно выражение за другим. Он также использовал их для вычисления значения функций, создав один из ранних численных методов, который используется до сих пор. На одной из страниц его манускриптов, датируемой 1665 г., показано численное определение площади под гиперболой, которую мы теперь распознаем как логарифмическую функцию. Он исследовал свойства бесконечных рядов, вычислив их суммы с поразительной точностью, до 55-го десятичного знака после запятой.

Ньютоновский расчет площади под гиперболой


Более сложные структуры – симплектические интеграторы, с помощью которых решаются дифференциальные уравнения механических систем с высокой точностью, сохраняя симплектическую структуру гамильтоновых уравнений. Это любопытная, но чрезвычайно важная разновидность геометрии, адаптированная для двух типов переменных, положения и импульса. Симплектические интеграторы особенно важны для исследований небесной механики, где – например – астрономы могут захотеть отследить движения планет Солнечной системы на протяжении миллиардов лет.

Используя симплектические интеграторы, Джек Уиздом, Жак Ласкар и другие ученые показали, что в длительных временных периодах поведение Солнечной системы хаотично, Уран и Нептун были гораздо ближе к Солнцу, чем сейчас, и в настоящее время орбита Меркурия смещается в сторону Венеры, так что одна из этих планет в итоге может оказаться вытесненной из Солнечной системы. Только симлектические интеграторы дают нам достаточную уверенность в том, что результаты для такого длительного промежутка точны.

Компьютерам нужна математика

Компьютеры помогают в математике, но и использование математики помогает компьютерам. Математические принципы были важным условием для работы ранних вычислительных устройств – как в плане доказательства самой концепции, так и в конструировании самих машин.

Все современные цифровые компьютеры работают на двоичной системе, где числа представляются последовательностями всего двух цифр: 0 и 1. Главное преимущество двоичной системы – в ее соответствии переключению: 0 – выключено, 1 – включено. Или 0 – нет напряжения, а 1 – это пять вольт или какой-то иной вариант, используемый в схеме проектирования. Символы 0 и 1 могут также быть интерпретированы в рамках математической логики как значения истинности: 0 означает ложь, 1 – истина. Иными словами, компьютеры могут выполнять логические вычисления так же, как и арифметические. Конечно, логические операции здесь базовые, а арифметические можно рассматривать как последствия логических. Алгебраический подход Буля к математике 0 и 1, изложенный в его «Исследовании законов мышления», обеспечивает эффективный формализм для логики компьютерных вычислений. Поисковые системы интернета выполняют булевы логические запросы: ищут ответы, определенные некоторой комбинацией логических критериев, такие как «содержит слово “кошка”, но не содержит слово “собака”».

Алгоритмы

Математика внесла свой вклад в компьютерную науку, но и компьютерная наука подтолкнула к открытию поразительной новой математики. По одному из определений, алгоритм – систематический порядок действий для решения задачи. Это слово восходит к арабскому ученому Аль-Хорезми. И тут возникает любопытный вопрос: как зависит время работы алгоритма от объема вводимых данных?

Например, алгоритм Евклида для нахождения наибольшего общего делителя двух целых чисел m и n, где mn, выглядит так.

• Разделить n на m и получить остаток r.

• Если r = 0, то наибольший общий делитель – m: СТОП.

• Если r> 0, тогда заменить n на m, а m на r и вернуться к началу.

Можно показать, что еслиm включает d десятичных цифр (мера объема вводимых данных для алгоритма), то алгоритм останавливается максимум после 5d шагов. Это значит, в частности, что если нам заданы два числа с 1000 цифр, то мы можем вычислить их наибольший общий делитель не более чем за 5000 шагов – на что современному компьютеру требуется доля секунды.

Алгоритм Евклида имеет линейное время работы – продолжительность вычислений, пропорциональную объему (в цифрах) вводимых данных. В более широком смысле алгоритм имеет полиномиальное время работы, или относится к классу P, если его время работы пропорционально некой фиксированной степени (квадрат или куб) от объема вводимых данных. В противоположность этому все известные алгоритмы для нахождения простых множителей числа имеют экспоненциальное время работы – некую фиксированную константу в степени, зависящей от объема вводимых данных. Это и делает (гипотетически) безопасной криптосистему RSA.

Проще говоря, алгоритмы с полиномиальным временем работы применяются на практике в вычислениях на современных компьютерах, а алгоритмы с экспоненциальным временем работы – нет, и соответствующие подсчеты для них на практике произвести невозможно, даже для относительно малых объемов вводимых данных. Это отличие является эмпирическим правилом: полиномиальный алгоритм может иметь такую большую степень, что будет непрактичным, и некоторые алгоритмы со временем работы, худшим, чем полиномиальное, всё равно на поверку оказываются полезными.