КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Вычисление суммы ряда с использованием рекуррентной формулы
Итерационные циклы Это циклы с неизвестным числом повторений. Для определения момента окончания цикла выбирается какая-либо переменная (или выражение), значение которой при каждом прохождении цикла постепенно приближается к известной величине. («Итерация» - приближение). Значение переменной сравнивается с известной величиной, и выход из цикла происходит, когда значение переменной достигает указанной величины. Итерационные ВП являются основой большинства методов вычислений с заданной точностью. Рассмотрим итерационные циклы на примере вычисления суммы ряда с заданной точностью. Задача. Вычислить значение функции у = ех с погрешностью вычисления e = 0,001 при заданном значении х = 0,5. Функцию у = ех можно представить в виде суммы бесконечно сходящегося ряда (разложить в ряд): Вычисление функции, записанной в виде ряда, с заданной погрешностью означает, что суммироваться должны те члены ряда, абсолютная величина которых больше или равна заданной погрешности e. Меньшие члены, очевидно, не будут оказывать существенного влияния на результат вычислений. Анализируя величину членов ряда, видим, что они уменьшаются с увеличением n. Вычислим сумму ряда S, учитывая члены ряда, по модулю большие величины погрешности e, а остальные члены отбросим. Обозначим: n – текущий номер члена ряда; аn – n –ый член ряда. n –ый член ряда вычисляется по формуле . Эта формула неудобна тем, что содержит вычисление факториала n!, а это целая самостоятельная задача. В данном случае для упрощения вычислений будем использовать рекуррентную формулу (возвратную), позволяющую вычислять каждый член ряда путем умножения предыдущего члена на рекуррентный множитель, т.е. . Знаем, что и . Вычислим М: - рекуррентная формула для вычисления n -го члена ряда, т.е. при n = 1 – 1-го члена а 1 n = 2 – 2-го члена а 2 и т.д. Введем переменные: у – сумма ряда; n – номер члена ряда; а – величина члена ряда. Анализируем формулу ряда для задания начальных значений переменных: 1) при n = 1 получим 1-ый член , тогда начальное значение n = 1; 2) первое слагаемое ряда «1» ни при каких значениях n не получим, тогда у = 1; 3) вычислим а 0 для вычисления а 1 = а 0 х и очевидно, что для получения по рекуррентной формуле а 1 = х, следует выбрать а 0 = 1, тогда а 1 = 1 × х = х. Рассмотрим два варианта организации цикла. а). Программный код (Do While …) Private Sub btnCalculate_Click() [Calculate – вычислять] Dim y as Single, x as Single, e as Single, Y as Single Dim a as Single, n as Integer x=Val (TxtX.text) e=Val (Txte.text) y=1 n=1 a=1 a=a+x/n ‘вычисление 1-го члена ряда Do While abs(a) > = e ‘цикл с проверкой точности вычисления y=y+a n=n+1 a=a*x/n Loop TxtY.text = Cstr(y) Txtn.text = Cstr(n) Txta.text = Cstr(a) TxtY1.text = exp(x) [txtY1.text=Cstr(exp(x)) End Sub Блок-схема алгоритма вычисления суммы ряда
б) Блок-схема вычисления суммы ряда (if) Этот алгоритм более рационален, поскольку запись вычисления а производится один раз, а не два раза. Private Sub btnCalculate_Click() Dim … y = 1 x = 0.5 n = 1 a = 1 M: a = a*x/n if abs(a) > = e then y = y + a n = n + 1 goto M end if Form1. Print “y=”;y Form1. Print Form1. Print “a=”;a, “n=”; n Print “Y1=”; exp(x) End Sub
Дата добавления: 2014-01-07; Просмотров: 9910; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |