Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.01.2011, 19:02   #1
BackSlash
Пользователь
 
Регистрация: 15.12.2009
Сообщений: 39
Вопрос [Паскаль][Циклы][Бесконечная сумма][Объяснение]

Добрый вечер.
Есть у меня одна задача по циклам, которую я до сих пор не решил:
3.Вычислить значение суммы бесконечного ряда , с точностью до члена ряда, по модулю меньшего e=10-5, и значение функции (для проверки) , учесть, что -3.14<= x <= 3.14.

Так вот.прошу помочь мне разобраться в этой программе.

Я просто не понимаю что здесь нужно делать,сам ПРОЦЕСС, и зачем функция проверки дана?Что ей проверять?

Буду очень благодарен, если мне кто-нибудь объяснит сам ПРОЦЕСС, что тут нужно делать.И как можно подробнее.
Тут я знаю нужно найти сначала коэффициент, потом в зависимости от того каким он будет выбрать метод решения,всего их три.Это я сделаю, а вот логику программы я не понимаю.

И условия решения :"решить используя рекуррентные зависимости"

Кода не требую, требую объяснения
Изображения
Тип файла: jpg 1.JPG (2.4 Кб, 89 просмотров)
Тип файла: jpg 2.JPG (1.4 Кб, 82 просмотров)

Последний раз редактировалось BackSlash; 19.01.2011 в 19:34. Причина: Добавил сообщение
BackSlash вне форума Ответить с цитированием
Старый 19.01.2011, 20:25   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

функция Вам дана для того, чтобы Вы могли проверить своё решение. Дело в том, что разложение в данный ряд и должно (в бесконечности) давать значение данной функции.

"рекуррентные зависимости" — это когда Вы выяснили, как каждый последующий член ряда зависит от предыдущего (и от номера итерации).
Например, в данном случае, Ri равно Rпредыдущее*X^2 и делённое на произведение (i-1)*2*(i*2-1)

Код:
R := 1; {первый член ряда}
S := R;
i := 1;
while R>1E-5 do begin
  inc(i);
  R := R*sqr(x)/((i-1)*2*(i*2-1));
  S := S + R;
end;
S_func := sin(X)/X;
WriteLn('Сумма ряда: ',S:12:5);
WriteLn('Проверочная функция: ',S_func:12:5);
вот, если я нигде не ошибся - в результате должны быть очень близкие значения вычисленных величин..
Serge_Bliznykov вне форума Ответить с цитированием
Старый 19.01.2011, 21:10   #3
BackSlash
Пользователь
 
Регистрация: 15.12.2009
Сообщений: 39
По умолчанию

Так, более-менее понятно.Спасибо.
Зачем вот это дано: "учесть, что -3.14<= x <= 3.14"
То есть у меня вводимый х по условию должен быть в пределах этих значений, всего-навсего?
И если он, допустим не соответствует условию, я напишу что:" х не соответвует условию" и halt'ом выйду?
Я правильно понял?

И еще вот у меня в примере использованы факториалы,В паскале факториалов как таковых нет(Я же прав?)т.е. нужно будет писать функцию для вычисления?
Верно мыслю?
BackSlash вне форума Ответить с цитированием
Старый 19.01.2011, 21:28   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
И если он, допустим не соответствует условию, я напишу что:" х не соответвует условию" и halt'ом выйду?
Я правильно понял?
точно!

Цитата:
И еще вот у меня в примере использованы факториалы,В паскале факториалов как таковых нет(Я же прав?)т.е. нужно будет писать функцию для вычисления?
Верно мыслю?
Нет, неверно!
Перечитайте ещё раз внимательно мой пост, посмотрите пример готового решения. вы там видите вычисления факториала?! А знаете почему не видите? Потому что оно здесь НЕ НУЖНО. В том и прелесть реккурентных зависимостей!
поясню.
Шаг один. Член ряда = 1

Шаг два (i=2)
> Член ряда = предыдущий член ряда * X_в_квадрате / ( 2*3 );

Шаг три (i=3)
> Член ряда = предыдущий член ряда * X_в_квадрате / ( 4*5 );

Шаг четыре (i=4)
> Член ряда = предыдущий член ряда * X_в_квадрате / ( 6*7 );

факториал ушёл?..
понятно куда он делся?

Если по-прежднему что-то непонятно - спрашивайте...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 19.01.2011, 21:36   #5
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Цитата:
И если он, допустим не соответствует условию, я напишу что:" х не соответвует условию" и halt'ом выйду?
Я правильно понял?
Я бы всё-таки посоветовал выходить с помощью EXIT
Вадим Мошев вне форума Ответить с цитированием
Старый 19.01.2011, 22:14   #6
BackSlash
Пользователь
 
Регистрация: 15.12.2009
Сообщений: 39
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение

факториал ушёл?..
понятно куда он делся?

Если по-прежнему что-то непонятно - спрашивайте...
Если я правильно понял, то в цикле каждый раз будет домножаться x на следущий, что , в общем-то и есть факториал)
Следовательно никаких функций тут быть не должно.Да они и не нужны тут.

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

То есть:

Берем х=2 например, он как раз входит в область допустимых значений
-3.14<= x <= 3.14, поэтому программа выполняется дальше...итд.

Цитата:
Сообщение от Вадим Мошев
Я бы всё-таки посоветовал выходить с помощью EXIT
Почему?
BackSlash вне форума Ответить с цитированием
Старый 19.01.2011, 22:48   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Мне не понятен 1 момент, Вы не могли бы расписать еще раз в таком же виде как это будет работать,а то я не понял какой Вы х использовали в этом примере. Мне это надо чтоб до конца понять.
ну, это же только "костяк" - тело самого цикла.
Разумеется, надо описать все переменные.
Обеспечить ввод X, проверку на то, что введённое значение X удовлетворяет условию вхождения в диапазон, корректное сообщение, если X не входит в заданный диапазон,
ну и выход/прерывание работы программы в последнем случае.
например,
Код:
  WriteLn;
  Write('Введите X: ');
  Readln(X);

  if (X>=-3.14) and (X <= 3.14) then begin
    ... вычисления ....
  end
  else 
     WriteLn('Неверный X - выходит за пределы диапазона...') 
  Readln;
end.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 19.01.2011, 23:00   #8
BackSlash
Пользователь
 
Регистрация: 15.12.2009
Сообщений: 39
По умолчанию

не,не,не это я сам напишу

Я про вот это:

Цитата:
Шаг один. Член ряда = 1

Шаг два (i=2)
> Член ряда = предыдущий член ряда * X_в_квадрате / ( 2*3 );

Шаг три (i=3)
> Член ряда = предыдущий член ряда * X_в_квадрате / ( 4*5 );

Шаг четыре (i=4)
> Член ряда = предыдущий член ряда * X_в_квадрате / ( 6*7 );
Просто не понял откуда в скобках выражения взялись, я чего-то подумал что это объяснение того, что столо до них)
BackSlash вне форума Ответить с цитированием
Старый 19.01.2011, 23:18   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

вопрос стоит так - на что надо умножить предыдущий элемент, чтобы получить следующий
1) 1

2) X^2/3! = X^2/ (1*2*3) = Предыдущий член (он был 1) * X^2/ (2*3)

3) X^4/5! = X^4/1*2*3*4*5 = X^2/(2*3) умножить на X^2/(4*5) = Предыдущий_член (смотри пункт 2) ) * X^2/ (4*5)

и т.д.

так понятнее?...

фактически:
Разделите следующий элемент ряда на предыдущий.
Вот то, что Вы получили и используем!

Последний раз редактировалось Serge_Bliznykov; 19.01.2011 в 23:20.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 20.01.2011, 00:09   #10
BackSlash
Пользователь
 
Регистрация: 15.12.2009
Сообщений: 39
По умолчанию

Да, все ясно.Спасибо!
BackSlash вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Циклы. Паскаль SIvk Помощь студентам 4 10.03.2010 20:44
В опере бесконечная длина страницы aseeva_sonya HTML и CSS 2 24.11.2009 13:02
Просмотр картинки (бесконечная картинка) D!zel Мультимедиа в Delphi 1 31.01.2009 14:32