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

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.06 c
2-1133620282
haldey
2005-12-03 17:31
2005.12.18
Помогите с ComboBox


14-1133159066
Ega23
2005-11-28 09:24
2005.12.18
С днем рождения! 26 ноября


14-1133214311
SerJaNT
2005-11-29 00:45
2005.12.18
Интегралы


8-1121385884
Ruslan_86
2005-07-15 04:04
2005.12.18
Перемещение анимации по форме


2-1133134310
бетта тест
2005-11-28 02:31
2005.12.18
Если нажать Ctrl+Shift+G, то появляется какое то число