Скачиваний:
3
Добавлен:
01.05.2014
Размер:
3.93 Кб
Скачать
{ ‹ Ў®а в®а­ п а Ў®в  4: ‚лзЁб«Ґ­ЁҐ б㬬л ап¤ (б Їа®жҐ¤га ¬Ё) }

{ „«п § ¤ ­­ле 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, {б㬬  }
ss,r : Float;
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}
WriteLn(
'‘« Ј Ґ¬®Ґ t(',i:3,')= ',t:16,' б㬬  S(',i:3,')= ',s :16 );
WriteLn(fout,
'‘« Ј Ґ¬®Ґ t(',i:3,')= ',t:16,' б㬬  S(',i:3,')= ',s :16 );
while Abs(t) > epsil 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;
WriteLn(
'‘« Ј Ґ¬®Ґ t(',i:3,')= ',t:16,' б㬬  S(',i:3,')= ',s :16 );
WriteLn(fout,
'‘« Ј Ґ¬®Ґ t(',i:3,')= ',t:16,' б㬬  S(',i:3,')= ',s :16 );
{ 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, x: Float);
{Ќ §­ зҐ­ЁҐ:
1) § Їа®б Ё ўлзЁб«Ґ­ЁҐ Ї а ¬Ґва  в®з­®бвЁ eps,
ЇаЁ н⮬ ўў®¤Ёвбп 楫®Ґ p>0, в Є®Ґ, зв® Eps = 10^(-p).
2) ‚ў®¤ §­ зҐ­Ёп  аЈг¬Ґ­в  x.
3) ‚лў®¤ ᮮ⢥вбвўгойЁе ¤ ­­ле ­  нЄа ­ Ё ў д ©« "fout".}
var p: Byte;
begin {Input}
Write(fout,'’ЁЇ: Single. ');
Write( '’ЁЇ: Single. ');

Write('Epsilon = 10^(-p); ‚ўҐ¤ЁвҐ p (p>0):'); ReadLn(p);
eps := exp(-p*ln(10.0)); {Epsil = 10^(-p)}
Write(fout,'Epsilon = ',eps:10);
WriteLn( 'Epsilon = ',eps:10);

Write('‚ўҐ¤ЁвҐ §­ зҐ­ЁҐ  аЈг¬Ґ­в  x=');
ReadLn(x);
Write('‚ўҐ¤Ґ­® §­ зҐ­ЁҐ  аЈг¬Ґ­в  x=',x :10:7,' (Enter):');
Writeln(fout,' x = ',x:10:7);
ReadLn;
end {Input};
{=========================================================}
begin {Main}
Assign(fout,'sinSngl3.dat');
Rewrite(fout);

WriteLn(fout,'‹ Ў®а в®а­ п а Ў®в  4: ‚лзЁб«Ґ­ЁҐ б㬬л ап¤ (б Їа®жҐ¤га ¬Ё)');
WriteLn('=====‹ Ў®а в®а­ п а Ў®в  4: ‚лзЁб«Ґ­ЁҐ б㬬л ап¤  (б Їа®жҐ¤га ¬Ё)=====');

{‚ў®¤ x Ё Epsil:}
Input(epsil,x);

{‚лзЁб«Ґ­Ёп Ї® § ¤ ­­л¬ x Ё Epsil:}
Sint(x, epsil, s, n);

{‚лў®¤ १г«мв в®ў:}
WriteLn(fout,'Ќ®¬Ґа Ї®б«Ґ¤­ҐЈ® б« Ј Ґ¬®Ј® n=',n:4);
WriteLn( 'Ќ®¬Ґа Ї®б«Ґ¤­ҐЈ® б« Ј Ґ¬®Ј® n=',n:4);
ss:=Sin(x);
WriteLn(fout,'‘в ­¤ ав­ п д-Ёп Sin x =',ss:16);
WriteLn( '‘в ­¤ ав­ п д-Ёп Sin x =',ss:16);
WriteLn(fout,'‘㬬  S(x) =',s :16);
WriteLn( '‘㬬  S(x) =',s :16);
r:=abs(s-ss);
WriteLn(fout,'ЂЎб®«ов­ п Ї®ЈаҐи­®бвм r(x) =',r :16);
WriteLn( 'ЂЎб®«ов­ п Ї®ЈаҐи­®бвм r(x) =',r :16);
WriteLn(fout,'Џ а ¬Ґва в®з­®бвЁ Epsilon =',epsil :16);
WriteLn( 'Џ а ¬Ґва в®з­®бвЁ Epsilon =',epsil :16);

Close(fout);
end.

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