Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Нахождение суммы ряда






Для заданных значений и вычислить сумму ряда

, где .

с точностью . Суммирование ряда завершить, если модуль очередного члена ряда не превосходит . Предусмотреть ограничение количества слагаемых ряда – если их количество превосходит максимально допустимое, выдать сообщение 'Требуемая точность вычислений не достигнута'.

Форма будет иметь следующий вид (рис. 14):

Рис.14

При анализе данной задачи необходимо отметить, что каждый новый член ряда должен быть получен, опираясь на предыдущий или его часть. Рассмотрим соотношение элементов . В рассматриваемой задаче для , соответственно . Отсюда . Далее важно определиться с начальным значением (в нашем случае ) и проследить, чтобы порядок накопления суммы и значения счетчика ряда менялись в нужной последовательности. Чтобы осознать значимость следования операторов, попробуйте поменять в теле цикла местоположение оператора i: = i+1 - “поднимите” его в начало тела цикла, сразу после слова begin. Выполнив фрагмент программы пошагово, вы убедитесь, что общий член ряда будет видоизменен – уже при вы получите вместо необходимого .

 

Фрагмент кода:

{***********************************************************}

procedureTfrm_Z3.btnOKClick(Sender: TObject);

var sum, x, eps, a, mnog: extended;

i, m_dop: Word;

begin

// Присвоение значенийx, eps, m_dop

i: = 0; {количество членов ряда}

a: = x; { a - первый член ряда }

Sum: = a; { Sum - первая частичная сумма ряда }

while (abs(a) > eps) and (i< =m_dop) do

begin

mnog: = -x*x/(2*i+2)/(2*i+3);

a: = a*mnog;

Sum: = Sum+a;

i: = i+1;

end;

 

// вывод результатов в поле mem_Result в зависимости от накопленного переменной i значения m_dop

{***********************************************************}

 

Но для случая рядов, в которых в общем виде члена ряда нет рекуррентных выражений (например, факториала или возведения в степень), использование соотношения должно быть иным. Рассмотрим в качестве примера ряд В нем . Т.о., если , то при . Но при вычислении следующего () члена ряда происходит умножение и деление на одно и то же число, в данном случае 3. Поэтому целесообразно включить в рекуррентно накапливаемое очередное значение члена ряда лишь числитель. Соответствующий фрагмент кода может выглядеть так:

mnog: = -x*x;

while (abs(a) > eps) and (i< =m_dop) do

begin

a: = a*mnog;

Sum: = Sum+a/(2*i+1);

i: = i+1;

end;

 


Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.006 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал