Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МетодичкаРГР_Программирование.doc
Скачиваний:
5
Добавлен:
17.11.2019
Размер:
1.13 Mб
Скачать

2.2 Рекомендации по составлению алгоритмов решаемых задач

2.2.1Итерационные алгоритмы

Алгоритм решения уравнений, приведенных в таблице 2.1 заключается в следующем. Берется какое-нибудь приближенное значение корня уравнения х0 (начальное приближение) и подставляется в итерационную формулу. Полученное по итерационной формуле новое приближенное значение корня сравнивается с предыдущим. Если эти значения существенно отличаются друг от друга, то новое приближенное значение подставляется в итерационную формулу вместо старого и получается новое приближенное значение. Так продолжается до тех пор, пока новое и старое приближения станут достаточно близкими дуг к другу.

Примером итерационного алгоритма может служить алгоритм вычисления кубического корня методом Ньютона, который представлен на рисунке 2.1.

Рисунок 2.1 – Схема итерационного алгоритма

Суть метода заключается в том, что приближенное значение корня находится по формуле 2.1.

(2.1)

где а – число, из которого извлекается корень, xold – приближенное значение корня, xnew – более точное, чем xold значение корня.

Таким образом, формула позволяет последовательно уточнять значения корня, используя предыдущий результат. В качестве начального значения для x можно взять число, из которого извлекается корень.

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

Для реализации этого алгоритма используется цикл REPEAT.

Схема алгоритма, реализующего этот метод, представлена на рисунке 2.1.

В алгоритме предусмотрено прерывание цикла с помощью инструкции break в том случае, если переменная Xold равна нулю, для того, чтобы исключить деление на 0.

2.2.2Алгоритмы вычисления сумм бесконечных рядов

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

Вычисление суммы имеет смысл только в том случае, если ряд сходится, то есть значения членов ряда постепенно уменьшаются. Поэтому накопление суммы производят до тех пор, пока очередной член ряда не станет меньше некоторого, наперед заданного, достаточно малого числа.

Ниже рассматривается пример вычисления синуса как суммы бесконечного ряда.

Синус можно представить как сумму бесконечного ряда 2.2.

(2.2)

Особенность данного ряда состоит в том, что каждый член ряда, начиная со второго, может быть найден их предыдущего по формуле 2.3.

(2.3)

Алгоритм вычисления синуса по формуле 2.2 с использованием соотношения 2.3 представлен на рисунке 2.2.

Рисунок 2.2 – Алгоритм вычисления суммы бесконечного ряда

Ряд 2.2 при больших значениях х сходится медленно, а факториал и «х в степени» растут очень быстро. Это приводит к тому, что все значащие цифры этих чисел перестают помещаться в разрядной сетке и, следовательно, обрезаются, вследствие чего результат искажается. Для того, чтобы избежать переполнения или потери значащих цифр при больших значениях х в рассмотренном алгоритме целесообразно выполнить предварительную обработку переменной х. Для этого следует в начале алгоритма реализовать цикл, в котором переменная х будет уменьшаться на величину периода синуса, который равен 2π, до тех пор, пока х не станет меньше, чем 2π.