Собственно сама задача:
Составить программу вычисления суммы членов бесконечного числового ряда с погрешностью Е=10^-4. Определить количество членов ряда,сравнить полученное значение суммы со значением функции y=Ln(x),x=1.5.
формула суммы ряда фото:
мое творение:
Program primer;
{Ln(x)}
var
a:real; {n-й член ряда}
b:real; {ошибка}
n:integer; {число итераций}
s:real; {сумма ряда}
x:real; {аргумент}
begin
write('x=');
readln(x);
write('точность e=');
readln(e);
s:=0;
n:=1;
a:=x; {0й член}
while abs(a)>e do begin
s:=s+a;
n:=n+1;
a:=(x-1)*n*n/(n*x*n*n);
end;
writeln('сумма ряда=',s:6:5);
writeln('точность=',e:6:5);
writeln('число членов=',n);
writeln('Ln(',x:6:5,')=',Ln(x):6:5);
writeln('расхождение=',abs(Ln(x)-s):6:5);
readln;
end.
Формулу в порядок приведи, хотелось бы видеть, с правильной ли ты формулой работаешь вообще... Кстати, твоя программа компилироваться не будет - переменная E не описана... И еще: E - это не ошибка, а точность. Ошибка вычисляется по другому...
исправил...
В таком случае (раз ты выбрал эту формулу), я бы сделал так:
s:=0;Сравни, за сколько итераций находится решение у тебя и за сколько - в моем варианте...
n:=1;
a:=1;
while abs(a)>e do begin
a:=a * (x-1) / x;
s:=s+a/n;
n:=n+1;
end;
А можете написать полностью программу от начала,до конца? Я просто не могу понять что и куда писать? Буду очень благодарен
Зачем от начала до конца? Вот основа:
write('x='); readln(x);, дальше выводи что тебе нужно... Сумма посчитана, номер члена, который меньше погрешности - тоже.
write('e='); readln(e);
s:=0;
n:=1;
a:=1;
repeat
a := a * (x-1) / x;
s := s + a/n;
n := n+1;
until a / n < e;
блин,всё равно въехать не могу:-( я не знаю как сама задача решается и поэтому обратился на этот форум. Мне просто нужен код программы от program до end.