Proc44. Описать функцию Arctg1(x, $$\epsilon$$) вещественного типа (параметры $$x$$, $$\epsilon$$ — вещественные, $$|x| < 1, \epsilon > 0$$), находящую приближенное значение функции $$arctg(x)$$: $$arctg(x) = x — x^3/3 + x^5/5 — … + (-1)^n*x^{2*n+1}/(2*n+1) + …$$ . В сумме учитывать все слагаемые, модуль которых больше $$\epsilon$$. С помощью Arctg1 найти приближенное значение $$arctg(x)$$ для данного $$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 |
program Proc44; Function Arctg1(x,e:Real):Real; var Znak,i:integer; xi,ni:Real; TempRez,Rez:Real; begin xi:=1; i:=0; Znak:=-1; Rez:=0; TempRez:=x; While (abs(TempRez) > e) do begin if odd(i) then begin Znak:=Znak*(-1); Rez:=Rez+Znak*TempRez; end; inc(i); xi:=xi*x; if odd(i) then begin TempRez:=xi/i; end; end; Arctg1:=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(Arctg1(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 |
function Arctg1(x,e:real):real; var Arctg1_n:real; i:integer; begin Arctg1_n:=x; result:=0; i:=0; while abs(Arctg1_n/(2*i+1))>e do begin result:=result+Arctg1_n/(2*i+1); inc(i); Arctg1_n:=-Arctg1_n*x*x; end; end; var i:integer; x,e:real; begin read(x); for i:=1 to 6 do begin read(e); write(Arctg1(x,e)); end; end. |
Другие задачи из раздела Proc можно посмотреть здесь.
Строка 16 добавить модуль
Поправил
Было:
Стало:
[/crayon]
Добавил в шапку