Форум: "Начинающим";
Текущий архив: 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