Program E9; var p, i, n: integer; begin write ('введите целое n = '); readln (n); p: = 1; for i: = 1 to n do p: = p * i; write (n, '! = ',p); readln end.
Определим функцию f (x) = x^2 - 5cos(x-1); Необходимо найти ноль функции f (x) , т.е. значение х, при котором f(x) = 0; f(x) обратится в 0 , если cos(x-1) > 0 => - pi/2 < x < pi/2 => => (2 - pi)/2 < x < (2 + pi)/2 Корня будет два. Определим интервал для первого корня. Левая граница а = - 0,57, правая граница b = 1 Для второго корня левая граница а = 1, правая b = 2 корни будем находить методом деления пополам. Интервал [ a, b] делится пополам и определяется знак функции в этой точке, в зависимости от знака изменяется левая или правая граница интервала.
Программа будет следующей:
function f(x: real): real; begin f:=x*x-5*cos(x-1); end; { основная программа } var a,b,c,eps: real; k: integer; { a - начало интервала, b - конец } begin write('a = '); readln(a); write('b = '); readln(b); if f(a)*f(b)<0 then begin write('точность вычислений eps: '); readln(eps); k:=1; while abs(a-b)>eps do begin c:=(a+b)/2; if f(c)<>0 then begin if f(c)*f(b)<0 then a:=c else b:=c end; k:=k+1; end; writeln('корень = ',a:12:8); writeln('количество итераций: ',k); end else writeln('интервал задан неверно'); end.
a = -0.57 b = 1 точность вычислений eps: 0.00001 корень = -0.51726021 количество итераций: 19
a = 1 b = 2 точность вычислений eps: 0.00001 корень = 1.83345795 количество итераций: 18
begin
write('n = ');
readln(n);
f:=1;
for i:=1 to n do f:=f*i;
writeln(n,'! = ',f);
end.
Пример:
n = 6
6! = 720