Цитата:
Сообщение от Ксюшенька
Будьте добры, если не затрудняет, помоги решить зачетную задачу...прекрасно понимаю, что легкие, но сама ващеее....не бум-бум, а зачет нужно сдавать!!!Что делать...
|
Да без проблем. Только помните, что Xbeg и Xfin должны быть по абсолютной величине меньше 1, иначе возникнет ошибка. Например, можно проверить при значениях Xbeg=-0.8, Xfin=0.7, DX=0.1. Еще в программе для сравнения вычисляется и выводится точное значение ареатангенса.
Код:
CONST
Eps=0.0001;
VAR
SUM,X,Xbeg,Xfin,DX:REAL;
N,Ni:WORD;
i:Integer;
FUNCTION ArTh(Xa:Extended):Extended;
BEGIN
ArTh:=(1/2)*Ln((Xa+1)/(1-Xa));
END;
PROCEDURE SUMS(Xs:REAL; Var S:REAL; Var Ns:WORD);
VAR
a:REAL;
Begin
a:=Xs;
S:=Xs;
Ns:=0;
Repeat
Inc(Ns);
a:=a*Xs*Xs*(2*(Ns-1)+1)/(2*Ns+1);
S:=S+a;
Until Abs(a)<Eps;
End;
BEGIN
Write('Xbeg= ');
ReadLn(Xbeg);
Write('Xfin= ');
ReadLn(Xfin);
Write('DX= ');
ReadLn(DX);
If Xbeg>Xfin then DX:=-DX;
Ni:=Round((Xfin-Xbeg)/DX);
WriteLn(' Results of calculation:');
WriteLn(' X SUM N ArTh(X)');
WriteLn;
For i:=0 to Ni do
begin
X:=Xbeg+DX*i;
SUMS(X,SUM,N);
WriteLn(X:8:5,' ',SUM:8:5,' ',N:3,' ',ArTh(X):8:5);
end;
ReadLn;
END.