Proc42. Описать функцию Cos1(x, $$\epsilon$$) вещественного типа (параметры x, $$\epsilon$$ — вещественные, $$\epsilon > 0$$), находящую приближенное значение функции cos(x): $$cos(x) = 1 — x^2/(2!) + x^4/(4!) — … + (-1)^n*x^{2*n}/((2*n)!) + …$$ . В сумме учитывать все слагаемые, модуль которых больше ?. С помощью Cos1 найти приближенное значение косинуса для данного $$x$$ при шести данных $$\epsilon$$.
Решение:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
program Proc42; Function Cos1(x,e:Real):Real; var Znak,i:integer; xi,ni:Real; TempRez,Rez:Real; begin xi:=1; i:=0; ni:=1; Znak:=-1; Rez:=0; TempRez:=1; While (TempRez > e) do begin if not odd(i) then begin Znak:=Znak*(-1); Rez:=Rez+Znak*TempRez; end; inc(i); xi:=xi*x; ni:=ni*i; if not odd(i) then begin TempRez:=xi/ni; end; end; Cos1:=Rez; end; var X,E:real; i: integer; begin Write('X :'); Readln(X); for i:=1 to 6 do begin Write('E :'); Readln(E); Writeln(Cos1(X,E)); end; end. |
Решение от olegst1975:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
program Proc41; function Cos1(x,e:real):real; var Cos1_n:real; i:integer; begin Cos1_n:=1; result:=0; i:=0; while abs(Cos1_n)>e do begin result:=result+Cos1_n; inc(i); Cos1_n:=-Cos1_n*x*x/((2*i-1)*(2*i)); end; end; var i:integer; x,e:real; begin read(x); for i:=1 to 6 do begin read(e); write(Cos1(x,e)); end; end. |
Другие задачи из раздела Proc можно посмотреть здесь.
[/crayon]
Добавил в шапку.