Помогите пожалуйста с задачей: для заданных "x" и "E" найти значение встроенной функции и сравнить со значением внешней при "x>1/2". Вот функция:
var x,summ,elem,element,rasn:real; epselon:real; k:word;
begin summ:=0; elem:=1;
writeln('Vvedite epselon');
read(epselon);
write('Vvedite x>=1/2:');
read(x);
elem:=elem*(x-1)/x;
k:=1;
repeat
element:=1/k*elem;
summ:=summ+element;
k:=k+1;
rasn:=Ln(x)-summ;
until rasn<epselon;
writeln('Rasnitsa ravna',rasn);
writeln('Natural log raven',ln(x));
readln;
readln;
end.
В чем именно проблема? Ты привел код, с ним что-то не в порядке?
Кстати, здесь: http://forum.pascal.net.ru/index.php?s=&showtopic=4535&view=findpost&p=44175
приведены разложения для нескольких стандартных функций...
Я не знаю верен ли этот код?
rasn:=Ln(x)-summ;для определения окончания цикла... Этого делать нельзя. Ты должен использовать разность между текущим и предыдущим элементом ряда...
Подскажи как это сделать?
var
n: integer;
x, eps, next, s: double;
begin
write('eps = '); readln(eps);
write('x = '); readln(x);
next := (x - 1)/x;
s := next; n := 1;
repeat
inc(n);
next := (next * (x - 1)) / x;
s := s + next/n;
until abs(next/n) < eps;
writeln('my func = ', s, ' ln(x) = ', ln(x));
end.