Главная страница
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.074 c
14-1132262245
Kerk
2005-11-18 00:17
2005.12.18
kladovka + delphibase


2-1133441955
worldmen
2005-12-01 15:59
2005.12.18
Передача данных из дочерн. формы в родит. форму


8-1121407670
Хинт
2005-07-15 10:07
2005.12.18
Pixels, ScanLine и Массив


2-1133166410
psa247
2005-11-28 11:26
2005.12.18
ListView.OnMouseLeave !


14-1132921459
Pazitron_Brain
2005-11-25 15:24
2005.12.18
А можно так сделать?