Скачиваний:
4
Добавлен:
01.05.2014
Размер:
2.28 Кб
Скачать
{ „«п § ¤ ­­ле epsil : (0..1) Ё x ўлзЁб«пҐвбп
S(n;x) = Sum (i:0..n) t(i;x),
Ј¤Ґ t(i;x) = (-)^i* x^(2i+1)/(2i+1)!
Ё n = Min [ k>=0 : Abs(t(k;x)) <= epsil ] }

type Float = Single;
var x, { аЈг¬Ґ­в }
epsil, {Ї а ¬Ґва в®з­®бвЁ }
s : Float;
l, n : Integer;
fout : Text;
Procedure sint( x, eps: Float; var s: Float; var n: Integer);
{ аЈ (in) : x -  аЈг¬Ґ­в дг­ЄжЁЁ,
eps - Ї а ¬Ґва в®з­®бвЁ;
१ (out): s - §­ зҐ­ЁҐ дг­ЄжЁЁ,
n - ­®¬Ґа Ї®б«Ґ¤­ҐЈ® б« Ј Ґ¬®Ј®,
­Ґпў­® § ¤ ў Ґ¬л© Є Є
n = Min [ k>=0 : Abs(t(k;x)) <= epsil ]
}
{ „ «ҐҐ ЇаЁ § ЇЁбЁ г⢥তҐ­Ё© ЁбЇ®«м§®ў ­л ®Ў®§­ зҐ­Ёп:
s(j) = Sum (i:0..j) t(i) ,
t(i) = (-)^i * x^(2i+1)/(2i+1)! .
‚лзЁб«Ґ­Ёп Їа®Ё§ў®¤пвбп Ї® ४га७в­л¬ ᮮ⭮襭Ёп¬ :
t(i) = t(i-1)*(-x*x)/d(i);
d(i) = 2i(2i+1); d(i) = d(i-1) + dd(i);
dd(i)= 8i-2; dd(i) = dd(i-1) + 8; }
var t, {б« Ј Ґ¬®Ґ}
w : Float;
i,d,dd: Integer;
begin {sint}
i := 0;
dd := -2; d := 0;
t := x; s := x;
w := -x*x;
{s=s(i) & t=t(i) & i=0}

while Abs(t) > eps do
begin { s=s(i) & t=t(i) & d=d(i) & dd=dd(i) & i<n }
i := i + 1;
dd := dd + 8;
d := d + dd;
t := t * w / d;
s := s + t;
{ s=s(i) & t=t(i) & d=d(i) & dd=dd(i) & i<=n }
end {while};
{ s = s(n) & t=t(n) }
n:=i
end{sint};

procedure Input(var eps: Float);
{ § Їа®б Ё ўлзЁб«Ґ­ЁҐ Ї а ¬Ґва  в®з­®бвЁ eps,
ЇаЁ н⮬ ўў®¤Ёвбп 楫®Ґ p>0, в Є®Ґ, зв® Eps = 10^(-p)}
var p: Byte;
begin {Input}
WriteLn('Epsilon = 10^(-p); ‚ўҐ¤ЁвҐ p (p>0):'); ReadLn(p);
eps := exp(-p*ln(10.0));
end {Input};

begin {Main}
Assign(fout,'sinSngl.dat');
Rewrite(fout); Write(fout,'Single ... ');

Input(epsil); {ўў®¤ Ї а ¬Ґва  в®з­®бвЁ}
WriteLn(fout,'Epsilon = ',epsil:10);

x := Pi/6;
for l:=1 to 6 do
begin
Write(fout,'x=',x :10:7);
sint(x, epsil, s, n);
WriteLn(fout,' S(x)=',s :16,':: Sin x =',Sin(x) :16,' n=',n:4 );
x := x + 2.*Pi;
end {for};
Close(fout);
end.

Соседние файлы в папке Вычисление суммы ряда с заданной точностью