Главная страница
    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.014 c
6-1125814498
murz
2005-09-04 10:14
2005.12.18
Символ


4-1129281662
Vir
2005-10-14 13:21
2005.12.18
Nt Sevice + GUI


8-1114806809
Profi
2005-04-30 00:33
2005.12.18
Изменение размера TImage


2-1133181678
Tihonya
2005-11-28 15:41
2005.12.18
Какую версию транслятора выбрать?


14-1132926223
TohaNik
2005-11-25 16:43
2005.12.18
А если час повертеть? :)





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский