Разложение функции в ряд тейлора sin(x)=x — (x^3/3!)+(x^5/5!)-(x^7/7!)+… R=~(безконечность) — найти S1, Nчленов ряда.- сумму S2 и количество K2 тех членов ряда которые по модулю > EPS — суму S3 и количество K3 которые > EPS/10- Pascal(Паскаль)

P1=|ST-S1|
P2=|ST-S2|
P3=|ST-S3|
вывести: X,N,EPS, ST,
ST, S1, P1,
ST, S2, K2, P2
ST, S3, K3, P3

uses crt;
var x,e,e1,s1,s2,s3,st,p1,p2,p3,t:real;
    n,i,k2,k3:integer;
begin
clrscr;
write('x=');
readln(x);
st:=sin(x);
{вычисляем N членов ряда}
write('Введите количество членов ряда n=');
readln(n);
s1:=x;{нулевое значение}
t:=x;
for i:=1 to n do
 begin
  t:=-t*x*x/(2*i*(2*i+1));{меняем знак, домножаем на x^2, делим на 2 следующих числа}
  s1:=s1+t;{прибавляем}
 end;
writeln('S1=',s1:0:6);
{задаем значение eps, порядок 0.0001-0.00000001}
repeat
write('Введите точность вычислений больше 0 и не более 0.1 e=');
readln(e);
until(e>0)and(e<=0.1);{нужно для проверки ввода, чтобы пользователь не ввел типа 10000}
{считаем сумму членов ряда больше eps}
s2:=x;
ch:=x;
zn:=1;
t:=x;
i:=1;
while abs(t)>=e do
  begin
   t:=-t*x*x/(2*i*(2*i+1));
   s2:=s2+t;
   inc(i);
 end;
k2:=i;
{считаем сумму членов ряда больше eps/10}
e1:=e/10;
s3:=x;
t:=x;
i:=1;
while abs(t)>=e1 do
  begin
   t:=-t*x*x/(2*i*(2*i+1));
   s3:=s3+t;
   inc(i);
 end;
k3:=i;
p1:=abs(st-s1);
p2:=abs(st-s2);
p3:=abs(st-s3);
writeln('X=',x:0:2,'  EXP=',e:0:8,'  ST=',st:0:8);
writeln('ST=',st:0:8,'  S1=',s1:0:8,'  N =',n:2,'  P1=',p1:0:12);
writeln('ST=',st:0:8,'  S2=',s2:0:8,'  K2=',k2:2,'  P2=',p2:0:12);
writeln('ST=',st:0:8,'  S3=',s3:0:8,'  K3=',k2:2,'  P3=',p3:0:12);
readln
end.

Leave a Comment

40 + = 43