Страница 1 из 1

Нахождение конечной суммы ряда в Фортране

Добавлено: 21 дек 2011, 07:47
Komuccap
Ребята помогите пожалуйста, нужна помощь. Дана формула ряда:
Изображение
Надо составить программу на Фортране.
У меня есть пример выполнения:
Дается формула S=a1+a2+...+an+...
Путем преобразований (которые я не до конца понимаю) получили:
an+1=-(an*4*x^2)/(2*n+1)*(2n+2)
a1=-(2*x)^2/2=2*x^2

И вот программа:
program lab3
eps=0.0001
print*,'x=?';read*,x
a=2*x**2;n=1
S=a
do
a=-(4*x**2)/(2*n+1)/(2*n+2)*a
if(abs(a)<eps) exit S=S+a n=n+1 end do print*,'S=',S end Но как на моём примере получить эти два данных?

Нахождение конечной суммы ряда в Фортране

Добавлено: 21 дек 2011, 10:54
kiv
Komuccap писал(а):Source of the post
Дается формула S=a1+a2+...+an+...
Путем преобразований (которые я не до конца понимаю) получили:
an+1=-(an*4*x^2)/(2*n+1)*(2n+2)
a1=-(2*x)^2/2=2*x^2


Но как на моём примере получить эти два данных?

Вопрос, как я понимаю, в этих двух выражениях?

Тогда смотрим на общий член ряда $$a_n=(2n+1)x^{2n}/n!$$. Если подставить n=1, то получится $$a_1$$ :), правда, первый член ряда - $$a_0$$.

Если записать формулу $$a_{n+1}$$, поделить на $$a_n$$ и как следует упростить, то получится искомое выражение $$a_{n+1}$$ через $$a_{n}$$. Все не просто просто, а очень просто

Нахождение конечной суммы ряда в Фортране

Добавлено: 21 дек 2011, 19:40
folk
В вычислительном (а не программистском) смысле надо суммировать в обратном направлении иначе вы теряете точность складывая масюсенькие члены с большущей суммой.

Нахождение конечной суммы ряда в Фортране

Добавлено: 22 дек 2011, 09:23
SiO2
folk писал(а):Source of the post В вычислительном (а не программистском) смысле надо суммировать в обратном направлении иначе вы теряете точность складывая масюсенькие члены с большущей суммой.

+1
Общий принцип в том, что складывать и вычитать нужно как можно более близкие по порядку величины.