Рассматривается вариант вычисления суммы бесконечного ряда, текущий член ai которого содержит степенные выражения, факториалы.
Что то не то написал. поправьте пожалуйста.
Program Lab4;
const
n=1000;
e=0.0001;
label met;
Var x,y,s,xn,xk,dx,a :real;
i:integer;
Begin
write('Введите xn,xk,dx=');
readln(xn,xk,dx);
x:=xn;
While x
Предлагаю такой вариант:
var i,n: integer;
s,x,e,d,sum: real;
procedure fact(y:integer);
begin
while y>=1 do begin
s:=s*y;
dec(y);
end;
end;
begin
cls;
e:=1e-10; s:=1;
x:=0.5;
repeat
fact(n);
d:=(exp(0.5*n*ln(2)+n*ln(x))+sin(n*3.1415926/4))/s;
sum:=sum+d;
writeln(' sum=',sum);
s:=1; inc(n);
until abs(d)<e;>

Зачем „мудрствовать”, когда можно представить каждое слогаемое, как предыдущее значение, умноженное на √(2)·x/n и умноженное на одну из восьми возможных значений sin(n·π/4) (которые можно рассчитать заранее) .
const
X0 = 0.2;
X1 = 0.8;
dX = 0.2';
Eps = 0.000001;
var
X, Q, Ai, S : Real;
N : Integer;
SinN : array [0..7] of Real;
begin
Q := Sqrt(2);
for N := 0 to 7 do
SinN[N] := Sin(N * Pi / 4);
X := X0;
repeat
Ai := 1;
S := 1;
N := 0;
repeat
Inc(N);
Ai := Ai * Q * X / N;
S := S + Ai * SinN[N mod 8];
until Abs(Ai * SinN[N mod 8]) < Eps;
WriteLn('S(', X:0:2, ') = ', S:0:7, ' Y(', X:0:2, ') = ', Exp(X)*Sin(X)+1:0:7, ' Погрешность = ', Abs(S - Exp(X)*Sin(X)-1):0:9);
X := X + dX;
until X > X1;
end.
Результат работы программы:
S(0.20) = 1.2426667 Y(0.20) = 1.2426553 Погрешность = 0.000011398
S(0.40) = 1.5813333 Y(0.40) = 1.5809439 Погрешность = 0.000389433
S(0.60) = 2.0320000 Y(0.60) = 2.0288457 Погрешность = 0.003154334
S(0.80) = 2.6106667 Y(0.80) = 2.5965053 Погрешность = 0.014161326