Доброго времени суток!
Мне нужно написать Pascal-программу. по следующему заданию.

Найти рекуррентную формулу, составить программу вычисления значений функции

путём разложения её в ряд
.
Вычисления производить с погрешностью eps для значений аргумента, изменяя от начального (XN) до конечного (XK) значения с шагом DX; диапазон значений аргумента: abs(x)<2.
Выполнить тестирование программы, вычисляя заданную функцию с помощью встроенных функций Паскаля.

В программировании я разбираюсь, но само задание не понимаю:
как найти эту рекуррентную формулу? что во что подставить и что посчитать?
Помогите пожалуйста. Нужно до завтра.

@темы: Вопрос, Pascal, рекуррентная формула

Комментарии
25.06.2010 в 21:08

давай оставим следы на песке под стеклом песочных часов
Формула суммы точно правильная? Если так, там ведь n сократится...
25.06.2010 в 21:12

Поправил.

25.06.2010 в 21:18

давай оставим следы на песке под стеклом песочных часов
А суть рекуррентной формулы такая: i+1-й член последовательности выразить через i-й. Например, если там действительно (1+x) в степени 2n, то для получения числителя i+1-го члена из i-го нужно умножить число на -1 и на (1+x) в квадрате. При этом знаменатель трогать не надо, потому что деление на n - всегда одно действие и нет возможности его делать рекуррентно.
То есть алгоритм будет такой:

r:=<выражение для n=1>;
s:=0;
n:=1;
цикл пока abs(r/n)>=eps
s:=s+r/n; {добавляем очередной член ряда в сумму}
n:=n+1;
r:=(-1)*r*(1+x)*(1+x); {вычисляем рекуррентно следующий числитель}
конец цикла
25.06.2010 в 21:28

давай оставим следы на песке под стеклом песочных часов
И ещё: если в задании уж очень строго надо найти именно рекуррентную формулу полностью, то можно написать, что число умножается на (-1), умножается на (1+x) в квадрате, умножается на (n-1) и делится на n (можете проверить сами, получится n-й член ряда из n-1-го). Но последние два действия только осложняют алгоритм, поэтому их лучше не вычислять рекуррентно - так и напишите в решении задачи.
25.06.2010 в 21:59

A r i s e n, спасибо. С рекуррентной формулой вы мне разъяснили.
Но у нас есть ещё функция, которую нужно посчитать. И да, я не знаю как разложить функцию в ряд.
25.06.2010 в 22:08

давай оставим следы на песке под стеклом песочных часов
Разложение функции в ряд - это и есть вычисление её при помощи формулы с суммой.
В задании дана функция - которая с логарифмом - и соответствующий ряд.
Сделать надо так (насколько я поняла): в промежутке от -2 до 2 брать через каждые dx некоторое значение x. Для него по приведённому выше алгоритму вычислять сумму. В итоге, когда abs(r/n) станет меньше eps, мы получим некоторое значение s. Теперь надо вычислить значение функции с логарифмом при помощи стандартного ln(x). И эти значения вывести на экран по типу "x=-2, s=..., f=...". Теперь перейти к следующему x (x:=x+dx) и для него повторить все эти действия и вывести очередную строку. Таким образом, получится список из нескольких строк, где x будет принимать значения, например, -2, -1.8,-1.6....,-1.8,2 (если принять dx=0.2), и для каждого будет вычислено своё s и f. В идеале, если вычислено правильно, s и f должны получиться очень близкие по значению для каждой строки.
25.06.2010 в 22:38

A r i s e n , ещё раз спасибо! Теперь всё понятно.
25.06.2010 в 22:50

давай оставим следы на песке под стеклом песочных часов
Не за что. Удачи Вам :)
26.06.2010 в 02:25

Программа всё равно не получается.
A r i s e n, ваш алгоритм:

При x<-2 или x>0, abs(r) будет увеличиваться за каждую итерацию больше, чем n. В таких условиях abs(r/n) никогда не будет меньше eps. :(
26.06.2010 в 07:58

давай оставим следы на песке под стеклом песочных часов
Оййй... В таких случаях формула, которая с сумммой ряда, неверна и вычислить функцию разложением невозможно. Проверьте задание ещё раз, наверно, что-то не учли. Или, может быть, надо посчитать только в промежутке (-2;0).
26.06.2010 в 08:04

Вроде формула с сумммой ряда верна. В пределе -2 <= x <= 0 вычисление по вашему алгоритму полностью совпадает с результатом вычисления самой функции.

Zt — погрешность результата; N — количество итераций, при нахождении суммы ряда.

P.S. Задание проверил. Переписано всё правильно.
26.06.2010 в 10:25

давай оставим следы на песке под стеклом песочных часов
Значит, формула действительна только для х от -2 до 0. В других случаях она неприменима, и вручную по ней посчитать тоже невозможно (вот попробуйте хотя бы для x=1, получается -4+8-31...., а должно быть ln(1/5)=-1/6094...). Это уже математика: для x>0 ряд не сходится (каждый следующий член по модулю больше предыдущего, значение начинает сильно "скакать", вместо того, чтобы стремиться к одному числу). Думаю, в решении нужно объяснить именно так и сдать программу с результатами от -2 до 0.
26.06.2010 в 14:33

A r i s e n, спасибо. Так и сделал.