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