Помогите решить задачу!
Y=LN(1+X)=X-X*X/2+X*X*X/3-...+(-1)^N*X^N/N+(-1)^N*X^X/N (|IXI|<1)
(Где ^N означает число в степени N)| (-1)^N*X^N/N |<EPS
Код:
member=x;
xx:=x;
s:=0;
n:=1;
while abs(member)>=eps do
begin
s:=s+member;
inc(n);
xx:=-x*xx;
member:=xx/N;
end;
xx:=x;
s:=0;
n:=1;
while abs(member)>=eps do
begin
s:=s+member;
inc(n);
xx:=-x*xx;
member:=xx/N;
end;
Цитата: wanja
Код:
member=x;
xx:=x;
s:=0;
n:=1;
while abs(member)>=eps do
begin
s:=s+member;
inc(n);
xx:=-x*xx;
member:=xx/N;
end;
xx:=x;
s:=0;
n:=1;
while abs(member)>=eps do
begin
s:=s+member;
inc(n);
xx:=-x*xx;
member:=xx/N;
end;
Т.е. мне осталось всего лишь написать код ввода X и EPS и всё?
И отладить, если есть ошибки.
Цитата: wanja
И отладить, если есть ошибки.
А тут "member=x;" точно не надо поставить :=? А то компилятор ругается
Вам разрешено использовать модуль System?
Цитата: QWERYTY
Ну если ругается ты подставь, а то ведь не будет компиляции.
Вам разрешено использовать модуль System?
Вам разрешено использовать модуль System?
Думаю, что можно. А можно как-нибудь без функции ABS сделать это задание?
Цитата: QWERYTY
Ну если ругается ты подставь, а то ведь не будет компиляции.
Вам разрешено использовать модуль System?
Вам разрешено использовать модуль System?
Кстати, я правильно сделал дописал код?
Код:
USES CRT;
Var
x, xx, s, member: REAL;
n, eps: INTEGER;
Begin
CLRSCR;
writeln('Enter X (X<1)'); READ(x);
while (x>=1) do
begin
writeln('Enter X (X<1)'); READ(x);
end;
writeln('Enter EPS'); READ(eps);
while (eps<=0) do
begin
writeln('Enter EPS (EPS>0)'); READ(eps);
end;
member:=x;
xx:=x;
s:=0;
n:=1;
ReadLN;
while abs(member)>=eps do
begin
s:=s+member;
inc(n);
xx:=-x*xx;
member:=xx/N;
end;
writeln('Result = ', member:1:eps);
ReadLN;
END.
Var
x, xx, s, member: REAL;
n, eps: INTEGER;
Begin
CLRSCR;
writeln('Enter X (X<1)'); READ(x);
while (x>=1) do
begin
writeln('Enter X (X<1)'); READ(x);
end;
writeln('Enter EPS'); READ(eps);
while (eps<=0) do
begin
writeln('Enter EPS (EPS>0)'); READ(eps);
end;
member:=x;
xx:=x;
s:=0;
n:=1;
ReadLN;
while abs(member)>=eps do
begin
s:=s+member;
inc(n);
xx:=-x*xx;
member:=xx/N;
end;
writeln('Result = ', member:1:eps);
ReadLN;
END.
А что вас смущает в Abs, если вы используете Inc?
Цитата: QWERYTY
А что вас смущает в Abs, если вы используете Inc?
Просто в задании написано, что нельзя использовать стандартные функции
Цитата: QWERYTY
А что вас смущает в Abs, если вы используете Inc?
А как бы Вы выполнили это задание?
Не используя стандартные функции, вычислить с точностью EPS>0
Y=LN(1+X)=X-X*X/2+X*X*X/3-...+(-1)^N*X^N/N+(-1)^N*X^X/N (|IXI|<1)
(Где ^N означает число в степени N) Когда | (-1)^N*X^N/N | < EPS, то можно прекращать счёт
Наверное я бы вдумался в задание, построил код сначала с использованием функций, а потом методично одну за одной убрал заменяя конструкциями с использованием + - * /
Не используя стандартные функции, вычислить с точностью EPS>0
Y=LN(1+X)=X-X*X/2+X*X*X/3-...+(-1)^N*X^N/N+(-1)^N*X^X/N
Где |X|<1
(Где ^N означает число в степени N) Когда |(-1)^N*X^N/N |<EPS программа выполнена.
А вот как я попробовал сделать, правильно?:
Код:
Код:
USES CRT;
Var
x, xx, s, member: REAL;
n, eps: INTEGER;
Begin
CLRSCR;
writeln('Enter X (X<1)'); READ(x);
while (x>=1) do
begin
writeln('Enter X (X<1)'); READ(x);
end;
writeln('Enter EPS'); READ(eps);
while (eps<=0) do
begin
writeln('Enter EPS (EPS>0)'); READ(eps);
end;
member:=x;
xx:=x;
s:=0;
n:=1;
ReadLN;
while abs(member)>=eps do
begin
s:=s+member;
inc(n);
xx:=-x*xx;
member:=xx/N;
end;
writeln('Result = ', member:1:eps);
ReadLN;
END.
Var
x, xx, s, member: REAL;
n, eps: INTEGER;
Begin
CLRSCR;
writeln('Enter X (X<1)'); READ(x);
while (x>=1) do
begin
writeln('Enter X (X<1)'); READ(x);
end;
writeln('Enter EPS'); READ(eps);
while (eps<=0) do
begin
writeln('Enter EPS (EPS>0)'); READ(eps);
end;
member:=x;
xx:=x;
s:=0;
n:=1;
ReadLN;
while abs(member)>=eps do
begin
s:=s+member;
inc(n);
xx:=-x*xx;
member:=xx/N;
end;
writeln('Result = ', member:1:eps);
ReadLN;
END.