Vladimir_S |
25.11.2012 14:39 |
Цитата:
Сообщение от Sorento
(Сообщение 823926)
А нельзя ли факториал задать без функции??
|
Можно. Вот вариант Вашей программы (увы, на Паскале) без явного задания факториала и явного использования возведения в степень. Но, повторяю, для больших аргументов это ровно ничего не меняет, ибо сходимость ряда в таком случае ужасающе медленная.
Код:
Var
b,xn,xk,x,sh,sum,t,A:real;
n:Integer;
YN:Char;
Label a1,a2;
Begin
a1:
Writeln('Vvedite x nachal"noe, x konechnoe, sdvig, shag, tochnost');
Readln(xn,xk,b,sh,t);
Writeln('+---------------------------------------+');
Writeln(' X cos(x+b) Function N ');
Writeln('+--------+---------+---------+----------+');
x:=xn;
Repeat
A:=Cos(b);
sum:=Cos(b);
n:=0;
While abs(A)>t do
begin
n:=n+1;
A:=A*x/n/Cos(b+Pi*(n-1)/2)*Cos(b+Pi*n/2);
sum:=sum+A;
end;
Writeln(x:6:2,Cos(x+b):11:3,sum:11:3,n:8);
x:=x+sh;
Until x>xk+sh/8;
Writeln('+--------+---------+---------+----------+');
a2:
Write('Prodolzit vychisleniya (Y/N)? ');
Readln(YN);
If YN='Y' then GoTo a1
else
If YN='N' then Halt(0)
else GoTo a2;
End.
|