Дано: программа, высчитывающая ряды фурье
Ошибка: неверно вычисляет a0 b0
Код:
Код:
Program ryad;
const aa=-Pi; bb=Pi; nn=20; eps=1e-3;
var a0,ak,bk:real;
k:integer;
a,b:array[1..nn] of real;
function f(x:real):real;
begin
f:=x+Pi
end;
function integ (c,k:integer):real;
var x, xn, dx, s, ss, e :real;
i, n:integer;
begin
dx:=bb-aa;
n:=1;
repeat
ss:=s;
s:=0;
n:=n*2;
dx:=dx/2;
x:=aa;
for i:=1 to n do
begin
xn:=x+dx;
case c of
0: s:=s+((1/Pi)*(f(x)+f(xn))/2*dx);
1: s:=s+((1/Pi)*(f(x)*cos(k*x)+f(xn)*cos(k*xn))/2*dx);
2: s:=s+((1/Pi)*(f(x)*sin(k*x)+f(xn)*sin(k*xn))/2*dx);
end;
x:=x+dx;
end;
if abs(s)>(1/1000) then e:=abs((ss-s)/s)
else
begin
e:=0;
s:=0;
end;
until e<eps;
integ:=s
end;
begin
a0:=integ (0,0);
writeln(a0);
for k:=1 to nn do
begin
a[k]:=integ(1,k);
write('ak ', a[k]);
b[k]:=integ(2,k);
writeln(' bk ', b[k]);
end;
end.
Где я допустил ошибку?