Главная страница
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.057 c
2-1133694436
dikiy
2005-12-04 14:07
2005.12.18
hook


3-1130535212
Германн
2005-10-29 01:33
2005.12.18
Unavalable resource


4-1129262049
Wood
2005-10-14 07:54
2005.12.18
звук модема на звуковую карту


1-1131823261
dj0n
2005-11-12 22:21
2005.12.18
А как сделать Preview по нажатию на кнопку в fastreport


2-1133526050
voe
2005-12-02 15:20
2005.12.18
Проверка значения на принадлежность к типу