Информатика и технология программирования

         

Вычисление суммы степенного ряда


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

.


Y = S0(x) + S1(x) + S2(x) +...+ Sn-1(x) + Sn(x) + ...
k(x,n) = Sn / Sn-1

Так, например для ряда, вычисляющего sin(x), коэффициент и функция его вычисления имеют вид:

.


3 5 7 n 2n+1
sin(x)=x - x/3! + x/5! - x/7! +...+ (-1) x / (2n+1)!
.
S0 S1 S2 S3 ... Sn
.
2
k(x,n) = Sn / Sn-1 = - x / (2n (2n+1))

Соответствующая программа выгладит так:


//------------------------------------------------------bk33-04.cpp


//--- Вычисление значения функции sin через степенной ряд


&#35include &#60iostream.h&#62
&#35include &#60math.h&#62
double sum(double x,double eps)
{
double s,sn; // Сумма и текущее слагаемое ряда


int n;
for (s=0., sn = x, n=1; fabs(sn) &#62 eps; n++)
{
s += sn;
sn = - sn * x * x / (2. * n * (2. * n + 1));
}
return s;
}
// Вычисление степенного ряда для x в диапазоне от 0.1 до 1 с шагом 0.1


void main()
{
double x;
for (x=0.1; x &#60= 1.; x += 0.1)
cout &#60&#60 "x=" &#60&#60 x &#60&#60 " sum=" &#60&#60 sum(x,0.0001) &#60&#60 " sin=" &#60&#60 sin(x) &#60&#60 endl;
}



Содержание раздела