21.12.2011, 11:28 | #1 (permalink) |
Member
Регистрация: 10.11.2011
Сообщений: 65
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 9
|
Нахождение конечной суммы ряда
Надо составить программу на Фортране. У меня есть пример выполнения: Дается формула S=a1+a2+...+an+... Путем преобразований (которые я не до конца понимаю) получили: a(n+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.12.2011, 11:28 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Посмотрите данные обсуждения, в них скорее всего есть важные ответы Составить формулу для ряда Сумма числового ряда Нахождение минимальных пересечений |
21.12.2011, 12:46 | #2 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Да очень просто. Что касается второго, то а1=1. А для первого нужно сосчитать отношение текущего слагаемого к предыдущему, каковое есть
|
21.12.2011, 13:49 | #3 (permalink) |
Member
Регистрация: 10.11.2011
Сообщений: 65
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 9
|
program lab3
eps=0.0001 print*,'x=?';read*,x a=1;n=1 S=a do a=(2*n+1)*x**2/(2*n-1)*n if(abs(a)<eps) exit S=S+a n=n-1 end do print*,'S=',S end Что касается а[1]=1, почему единица? |
21.12.2011, 14:24 | #5 (permalink) |
Member
Регистрация: 10.11.2011
Сообщений: 65
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 9
|
Значение икс принимает только в интервале -1<x<1, причем значение суммы всегда равняется 1,000000. Это нормально?
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
21.12.2011, 14:53 | #7 (permalink) |
Member
Регистрация: 10.11.2011
Сообщений: 65
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 9
|
Тек собственно и всё:
program lab3 eps=0.0001 print*,'x=?';read*,x a=1;n=1 S=a do a=(2*n+1)*x**2/((2*n-1)*n)*a if(abs(a)<eps) exit S=S+a n=n-1 end do print*,'S=',S end |
21.12.2011, 15:19 | #10 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|