logo
методичка_1_05_ВНУ

Обчислення суми знакозмінного ряду із заданою точністю

Обчислити в точці х значення функції y=cos(x) та суму нескінченного ряду:

,

де

Визначимо загальний член ряду за рекурентною формулою

.

Звідси

Тоді

Програма має такий вигляд:

program SumZnZm;

var

x,y,yn,pn,s,eps: real;

n: integer;

begin

writeln(' Введіть значення x',

' та точність eps');

readln(x,eps);

s:=0;

yn:=1;

n:=0;

while abs(yn)>eps do

begin

s:=s+yn;

n:=n+1;

pn:=-sqr(x)/(2*n*(2*n-1));

yn:=yn*pn

end;

y:=cos(x);

writeln('cos(',x:6:2,')=',y:7:3);

writeln('Сума ряду s=',s:7:3);

readln;

end.

Обчислення суми знакопостійного ряду із заданою точністю з використанням формули залишкового члена

Обчислити з точністю ε всі значення функції та відповідні суми знакопостійного ряду

змінюючи х на інтервалі [с; d] з кроком h.

Залишковий член оцінювати за формулою

В даному випадку маємо складний циклічний процес, а саме процес типу “цикл в циклі”. Зовнішній цикл (арифметичний) змінює значення х на інтервалі [а; b] з кроком h. Внутрішній цикл забезпечує для конкретного значення х обчислення відповідних значень функції y та суми S. Оскільки обчислення суми необхідно виконати з заданою точністю ε, то внутрішній цикл буде ітераційним.

На відміну від попереднього прикладу всі члени даного ряду одного і того ж знаку. Оцінку точності такого ряду здійснюють не за величиною поточного члена ряду, а за величиною залишкового члена. Зауважимо, що формули залишкових членів рядів дово­дяться в курсі математичного аналізу і, при потребі, їх можна знайти в довідниках.

Побудуємо рекурентні співвідношення.

Для поточного ряду:

Для залишкового члена ряду:

Для суми:

program SumZnPo;

uses

Crt;

Var c,d,h,eps,x,y,a,r,s:real;

k:integer;

Begin

CIrScr;

Writeln(' Введіть межі інтервалу c,d,',

' та крок h:');

Readln(c,d,h);

Write('Введіть точність обчислень eps:');

Readln(eps);

x:=c;

While x<=d+h/2 do

Begin

a:=1; s:=a; r:=2*x*x/3; k:=1;

While abs(r)>=eps do

Begin

a:=(x/(2*k-1))*(x/(2*k))*a;

r:=(x/(2*k+1))*(x/(2*k+2))*r;

s:=s+a;

k:=k+1;

End;

y:=(exp(x)+exp(-x))/2;

Writeln('x=',x:8:3,' y=',y:9:4,' s=',s:9:4);

x:=x+h;

End;

Readln;

End.