Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Рекуррентные формула
Для вычисления на компьютере сумм бесконечного ряда часто используют рекуррентные формулы, с помощью которых друг за другом вычисляют значения членов бесконечной последовательности. Рекуррентные формулы существенно сокращают время работы программы, упрощают процесс написания программы и ее отладки. Как правило, рекуррентные формулы программист должен составить сам. В этом и состоит искусство программирования вычислительных процессов. Рекуррентная формула может и отсутствовать. В этом случае каждый член ряда придется рассчитывать “в лоб” по полной формуле. Есть определенные признаки, которые помогают выявить наличие рекуррентных формул. К таким признакам относятся выражения и подобные этим выражения, присутствующие в формуле общего члена бесконечного ряда. Часто рекуррентная формула для бесконечного ряда находится путем деления соседних членов ряда друг на друга. Пример 30. Вычислить . Вычисление ряда окончить при выполнении условия . Для решения этой задачи необходимо использовать рекуррентную формулу. А найти ее можно следующим способом. Сделаем преобразование исходного ряда в следующий вид: . Тогда условие окончания вычислений будет выглядеть так . Это условие либо выполнится для некоторого i = n, и вычислительный процесс будет завершен, или не выполнится. Во втором случае используют термин “зависание программы”. Оператор ЭВМ искусственно останавливает программу и выясняет причину зависания: неправильные исходные данные, например, комбинация X и ε, или допущена ошибка в тексте программы, а может быть, получена неправильная рекуррентная формула, или другая причина имеет место. Нас в этом примере интересует нормальный режим работы программы, а это означает, что существует такое n, для которого справедливы следующие формулы: . (2-28) Эти формулы и будут исходными для нашей задачи. На этом первый этап подготовки бесконечного ряда к нахождению его суммы Y с погрешностью ε на компьютере завершается. Если рекуррентную формулу найти невозможно или нет в этом необходимости, то можно ограничится только приведенными выше преобразованиями. Но в нашем случае нужен второй этап преобразования, а именно, нахождение рекуррентной формулы. Для этого поделим два соседних члена . . (2-29) Из (2-29) и находится рекуррентная формула: . (2-30) Таблица имен
Sub Pr30() Dim Y As Double, X As Double, E As Double, A As Double Dim I As Integer ` X = InputBox(“X=” E = InputBox(“E=” I: = 1; A: = -X*X/2; Y: = 0; Do Until Y: = Y + A I: = I+1; A: = -X*X / 2 / I / (2*I - 1)*A; END; Loop WRITELN('Y = ', Y: 10: 6) END.
Пример 26. Вычислить с точностью ε квадратный корень из величины X .
Вычисление проводить по рекуррентной формуле , выбрав в качестве начального приближения величину
При решении подобных задач, условие остановки вычислительного процесса формулируется следующим образом: .
Таблица имен
Вводим с клавиатуры величины X и E. Далее вычисляем первое приближение Y. Если X < 1, то Y принимается равным X, в противном случае за Y принимается величина X/2. Далее на основании Y нужно найти следующее приближение. Поэтому вычисленное значение записывается в ячейку с именем Y1 и с этого момента времени считается предыдущим значением. Текущее значение Y рассчитывается по рекуррентной формуле на основании Y1 и X. Этот циклический процесс повторяется до тех пор, пока не выполнится условие │ Y - Y1│ < E. После чего Y считается равным значению корня из X с точностью E и выводится на экран монитора. Sub Pr26() Dim X As Double, Y As Double, Y1 As Double, E As Double Dim X As Double If X < 1 Y = X Else Y = X / 2 End If Do Y1: = Y; Y: = (Y1 + X / Y1) / 2 Loop Until ABS(Y - Y1) < E; MsgBox(“Y =” & Y) End Sub
|