Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Вычисление суммы ряда с заданной точностью / SIN_SUB2
.PAS { ‹ Ў®а в®а п а Ў®в 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.
{ „«п § ¤ ле 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.
Соседние файлы в папке Вычисление суммы ряда с заданной точностью