Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 21.12.2011, 11:28   #1 (permalink)
Su-34
Member
 
Регистрация: 10.11.2011
Сообщений: 65
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 9
По умолчанию Нахождение конечной суммы ряда

Ребята помогите пожалуйста, нужна помощь. Дана формула ряда:
oidhioea.jpg
Надо составить программу на Фортране.
У меня есть пример выполнения:
Дается формула 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

Но как на моём примере получить эти два данных?
Su-34 вне форума   Ответить с цитированием

Старый 21.12.2011, 11:28
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Посмотрите данные обсуждения, в них скорее всего есть важные ответы

Составить формулу для ряда
Сумма числового ряда
Нахождение минимальных пересечений

Старый 21.12.2011, 12:46   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Su-34 Посмотреть сообщение
Но как на моём примере получить эти два данных?
Да очень просто. Что касается второго, то а1=1. А для первого нужно сосчитать отношение текущего слагаемого к предыдущему, каковое есть
xxx.jpg
Vladimir_S вне форума   Ответить с цитированием
Старый 21.12.2011, 13:49   #3 (permalink)
Su-34
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, почему единица?
Su-34 вне форума   Ответить с цитированием
Старый 21.12.2011, 14:13   #4 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Su-34 Посмотреть сообщение
Что касается а[1]=1, почему единица?
Потому что первое слагаемое суммы - единица. Кроме того, в программе ошибка, даже две. У Вас:
a=(2*n+1)*x**2/(2*n-1)*n
а надо
a=(2*n+1)*x**2/((2*n-1)*n)*a
Ох, только что увидел: разумеется, не
n=n-1, а n=n+1
Vladimir_S вне форума   Ответить с цитированием
Старый 21.12.2011, 14:24   #5 (permalink)
Su-34
Member
 
Регистрация: 10.11.2011
Сообщений: 65
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 9
По умолчанию

Значение икс принимает только в интервале -1<x<1, причем значение суммы всегда равняется 1,000000. Это нормально?
Su-34 вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 21.12.2011, 14:41   #6 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Su-34 Посмотреть сообщение
Значение икс принимает только в интервале -1<x<1
Это правильно.
Цитата:
Сообщение от Su-34 Посмотреть сообщение
значение суммы всегда равняется 1,000000.
А вот это - полный бред. Выложите окончательный текст программы.
Vladimir_S вне форума   Ответить с цитированием
Старый 21.12.2011, 14:53   #7 (permalink)
Su-34
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
Su-34 вне форума   Ответить с цитированием
Старый 21.12.2011, 15:02   #8 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Su-34 Посмотреть сообщение
Тек собственно и всё:
"Тек" собственно а четвертую снизу строку исправить, как у меня написано в конце #4, т.е. "-" заменить на "+"?
Vladimir_S вне форума   Ответить с цитированием
Старый 21.12.2011, 15:11   #9 (permalink)
Su-34
Member
 
Регистрация: 10.11.2011
Сообщений: 65
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 9
По умолчанию

Всё получилось, спасибо за помощь и терпение
Su-34 вне форума   Ответить с цитированием
Старый 21.12.2011, 15:19   #10 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Su-34 Посмотреть сообщение
Всё получилось, спасибо за помощь и терпение
Ну и ладненько.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 16:55.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.