Помощь - Поиск - Пользователи - Календарь
Полная версия: Решение функции.
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Jason
Помогите пожалуйста с задачей: для заданных "x" и "E" найти значение встроенной функции и сравнить со значением внешней при "x>1/2". Вот функция:
Код

         k=беск.   (x-1)^k  
Ln(x)= Sum      -------
          k=1              kx




 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.

volvo
В чем именно проблема? Ты привел код, с ним что-то не в порядке?

Кстати, здесь: Разложение функции в ряд
приведены разложения для нескольких стандартных функций...
Jason
Я не знаю верен ли этот код?
Ozzя
Цитата(Jason @ 11.01.2006 15:18) *

Я не знаю верен ли этот код?

Сверь со значением стандартной функции ln(x)
volvo
Цитата
Я не знаю верен ли этот код?
Нет... Ты в коде используешь
rasn:=Ln(x)-summ;
для определения окончания цикла... Этого делать нельзя. Ты должен использовать разность между текущим и предыдущим элементом ряда...
Jason
Подскажи как это сделать?
volvo
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.

Только учти, что X должен быть больше 0.5 ...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.