Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.12.24;
Скачать: CL | DM;

Вниз

Формула реккурентной последовательности.   Найти похожие ветки 

 
Bew   (2006-11-30 23:11) [0]

Как всегда, самое сложное в контре по программированию не кодинг, а математическая часть. Короче, кто знает, подскажите формулу реккурентной последовательности (т.е. на что нужно умножать каждый шаг цикла) для такой вот гадости:

http://img127.imageshack.us/img127/4342/dsc00310rs7.gif

Заранее благодарен


 
Юрий Зотов ©   (2006-11-30 23:31) [1]

Ни на что умножать не надо. Зачем? Там же сумма, а не факториал. Просто вычисляем следующий член и суммируем с аккумулятором.

Там основная проблема не в этом, а в способе суммирования и в том, когда останавливать цикл. Арифметика с плавающей точкой, однако, да еще накопление погрешности, да еще знакопеременный ряд. Если делать "в лоб", то можно полную ерунду получить.


 
Romkin ©   (2006-12-01 00:26) [2]

Да, вся фишка здесь в том, чтобы получать каждый следующий член из предыдущего. Просто тупо умножая на (-x^2)/...


 
vasIzmax ©   (2006-12-01 01:04) [3]

uses math;
summa:=summa+intpower(-1,n)*(intpower(x,2*n+1))/(2*n+1);


 
Юрий Зотов ©   (2006-12-01 01:56) [4]

> Romkin ©   (01.12.06 00:26) [2]

1. Не получится. Знаменатель не пущает.

2. Основная фишка в знакопеременном ряде. Если делать "в лоб", можем получить слишком высокую погрешность.


 
Думкин ©   (2006-12-01 05:55) [5]

> Юрий Зотов ©   (01.12.06 01:56) [4]

почему можем получить большую погрешность? Чем так плохи ряды Лейбница?


 
Alx2 ©   (2006-12-01 06:29) [6]

uses Math;
function Sum_Infinity( x : double):double;
begin
result := 1/2*arctan2(2*x,1-x*x);
end;


 
Alx2 ©   (2006-12-01 06:30) [7]

к Alx2 ©   (01.12.06 06:29) [6]

Забыл: |x|<=1


 
Alx2 ©   (2006-12-01 06:35) [8]

Блин... сорри. Еще проще получается
uses Math;
function Sum_Infinity( x : double):double;
begin
result := arctan(x);
end;


 
MBo ©   (2006-12-01 07:24) [9]

>Alx2
Ты же понимаешь, что цель задачи - научиться писать несложные циклы, а не получить значение ;)


 
Romkin ©   (2006-12-01 09:31) [10]

Юрий Зотов ©   (01.12.06 01:56) [4]

> 1. Не получится. Знаменатель не пущает.

Получится. Для получения следующего члена предыдущий умножается на -1*(x^2)*(2n-1)/(2n+1) :)
А вот из-за знака лучше объединить два члена... Впрочем, и этого не надо, ряд сходится, похоже, только при (Alx2 ©   (01.12.06 06:30) [7]), поэтому и не надо.


 
Bew   (2006-12-01 09:37) [11]

2
Romkin предложил тот метод решения, который описан в методичке. Мне как раз и нужно узнать, на что "тупо умножать".

2alx
В задаче arctan(x) тоже упоминается. Типа выполнить 60 раз, при этом сумма должна быть каждый раз такой же, как и при вычислении arctan(x) .


> Ты же понимаешь, что цель задачи - научиться писать несложные
> циклы, а не получить значение ;)


Блин, я 3 года программистом работаю. Умею я писать циклы!!! Ненавижу, мля, отечественное образование! Если кому-нить нужно учить циклы - пусть массивы, например, сортируют. Но вот нахера матехой грузить то?!


 
wal ©   (2006-12-01 10:15) [12]


> [11] Bew   (01.12.06 09:37)
> Блин ....
А нужна ли программисту математика?
ЗЫ. :)


 
jack128 ©   (2006-12-01 10:39) [13]

Bew   (01.12.06 9:37) [11]
Но вот нахера матехой грузить то?!


Чего грузить то?  Математика уровня 7 класса, вообще то.


 
Romkin ©   (2006-12-01 10:40) [14]

Bew   (01.12.06 09:37) [11] Такие задачи и их решение надо знать. Почему - читай, что написал Зотов :)
Кстати, достаточно один раз показать, дальше это запоминается. Мог бы и сам сделать, если в методичке написано.
И математика программисту нужна, без нее это программист-недоучка. Точнее, вообще не программист, а кодер.


 
jack128 ©   (2006-12-01 10:42) [15]

Romkin ©   (01.12.06 9:31) [10]
Получится. Для получения следующего члена предыдущий умножается на -1*(x^2)*(2n-1)/(2n+1) :)

не член, а слагаемое, кстати говоря ;-)


 
BiN ©   (2006-12-01 10:44) [16]

Я дико извиняюсь, а результат разве не будет равен просто X.


 
pasha_golub ©   (2006-12-01 10:45) [17]


> jack128 ©   (01.12.06 10:42) [15]

Кому что на слух приятней. :)) Можно, на украинском еще: доданок.


 
Думкин ©   (2006-12-01 11:12) [18]


> BiN ©   (01.12.06 10:44) [16]

Не будет. Это разложение арктангенса в нуле.

> Romkin ©   (01.12.06 09:31) [10]

Если у знакопеременного стремится к нулю общий член, то и ряд сходится. А к нулю тут - если по модулю меньше 1.


 
Alx2 ©   (2006-12-01 12:23) [19]

>MBo ©   (01.12.06 07:24)

Увы, с сильным запозданием :)


 
Bew   (2006-12-01 17:01) [20]

Спасибо всем! Вопрос решён.



Страницы: 1 вся ветка

Текущий архив: 2006.12.24;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.061 c
6-1153678565
Vitaliy
2006-07-23 22:16
2006.12.24
Сокеты, таймаут


4-1155733452
Владимир Владимирович
2006-08-16 17:04
2006.12.24
UpdateResource (изменение данных в исполняемом файле)


8-1145691384
QuickFinder
2006-04-22 11:36
2006.12.24
объединение WMV-файлов


15-1164875852
pasha_golub
2006-11-30 11:37
2006.12.24
Вычисление булевых выражений


3-1160578319
DelphiLexx
2006-10-11 18:51
2006.12.24
Директива FireBird - USE_EMBEDDED_FB