Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2005.12.18;
Скачать: [xml.tar.bz2];

Вниз

Помогите разобраться с математикой!   Найти похожие ветки 

 
kernef   (2005-11-30 22:13) [0]

Мне нужно подсчитать при n=120 следующее выражение:

http://img366.imageshack.us/img366/5580/formula8ed.jpg

Проблема в том, что я не знаю что делать на каждом шаге цикла в математическом смысле.
По идее, здесь нужно использовать рекуррентную последовательность и на каждом шаге предыдущее слогаемое умножать на некую формулу Y и результат прибавлять к сумме. Только вот чему равен Y, я не знаю. Может Вы знаете?
(Я не прошу код, прошу помощи только в математике! Хотя от кода тож не откажусь:)


 
palva ©   (2005-11-30 22:25) [1]

По-моему, у второго слагаемого пропущен множитель x (в первой степени).
Рекурретно стоит вычислять только (x^n) / n!, т. е. на i-том шаге умножеть величину на x и делить на i. А cos вычислять отдельно и умножать на получившуюся величину и накапливать результат.


 
kernef   (2005-12-01 02:13) [2]

Спасибо преогромное! Пусть снизойдёт на вас благодать!
--
Если интерестно, вот код:

sx:=1;  // Итог
a:=1;   // Промежуточный результат

for i:=1 to n do
 begin
    y:=cos(i*(pi/4));
    a:=a*x/i;
    sx:=sx+a*y;
 end;


 
Думкин ©   (2005-12-01 06:49) [3]

Многие конечные ряды лучше суммировать наоборот. Не с первого по последний.
А с последнего по первый(вернее от меньших по модулю к большим). Хотя коммутативность и имеет место быть в математике, но в компьютерной арифметике не всегда.

В вашем случае, все работает итак, но это из-за того, что остаточный член очень быстро убывает. Фактически после i>20(зависит от x) ваше sx не изменяется. Но ввиду того, что остаточный член сравним с последним произошедшим изменением(очень грубо, конечно), то и на результате это не сказывается.
Но если бы оставшиеся 100 членов давали в сумме изменение в сравнимые с требуемой погрешностью, то ответ был бы неверен.
Для 100 членов это конечно, натянуто - но при большем количестве и на других типах(не extended)  - вполне.


 
SergP ©   (2005-12-01 09:10) [4]


>    y:=cos(i*(pi/4));


А не лучше ли так:

...
const zs:array[0..7] of extended = .....
...

...
y:=zs[i and 7];
...



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

Форум: "Начинающим";
Текущий архив: 2005.12.18;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.013 c
14-1132747769
DiamondShark
2005-11-23 15:09
2005.12.18
Клиенты ICQ


4-1129633004
timotei
2005-10-18 14:56
2005.12.18
BSOD KeBugCheckEx как???


2-1132782536
Officeman
2005-11-24 00:48
2005.12.18
Вопрос про Hint !!!


6-1125860805
Станислав
2005-09-04 23:06
2005.12.18
сетевая игра :)


5-1117455686
Prohodil Mimo
2005-05-30 16:21
2005.12.18
отлов нажатия ТАБ - всё работает, но слышен beep.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский