Поиск - Участники - Календарь
Перейти к полной версии: Итерационный цикл в VB
ElderScrolls.Net Conference > Библиотека > Software
Piroman
Доброго времени суток. Нужна помощь знающих людей, коих здесь немало, я полагаю smile.gif Вот задача:

Цитата: 
Составить алгоритм и программу для вычисления значения функции Y с заданной точностью E. Итерационные вычисления значений функции y производятся по определенной рекуррентной формуле, пусть будет пока в общем виде: y(i+1) = f(y(i); y(i-1))  .Вычисления заканчиваются при выполнении условия |y(i+1) - y(i)|<=E . Вывести на печать значения функции Y и число итераций, выполненных для выполнения поставленного условия. Е = 0,01. Начальные значения y0=0.55, y1=0.35

Указание: использовать операторы Do... Loop


надо добавить, что (i), (i + 1), (i - 1) - просто нижние индексы.

Думаю, прог. код недлинный, но это было бы просто идеально, поэтому я буду рад блок-схемке какой-нить или просто пунктам, которых надо придерживаться.

PS. итерации на занятиях почему-то не проходили... да и я не программист, преуспеваю, только в рамках программы, не более.
Mechanical Lover
Составить цикл любой сложности - не проблема. Может потребоваться несколько вложенных и промежуточные переменные. Но если подробнее растолкуешь условия задачи smile.gif Что поделать, математику со студенческих времен подзабыл, вот в программировании упражняться приходится регулярно smile.gif
И почему непременно Do...Loop, когда тут, похоже, логичнее использовать For...Next?
Piroman
Вот собственно задача со всеми данными условиями.

Спойлер! Чтобы прочитать скрытый текст, щелкните мышкой.


А по поводу Do... Loop сказано:

Цитата: 
Указания. При программировании циклов с незаданным числом повторения следует использовать цикл с условием, организуемый с помощью оператора Do… Loop. Цикл будет выполняться до тех пор, пока не будет выполнено <вышеупомянутое> условие. Число итераций – это количество выполненных циклов для достижения заданной точности вычисления.
Dr. YankeeDoodle
Ах, ьим ышшо и счетчег нужен...
Код:

Do Until Abs(y1 - y0) <= E
   i=i+1
   y0 = f(y0, y1)
   y1 = f(y1, f(y0, y1))
   Debug.Print y0 & vbCrLf
   Debug.Print y1 & vbCrLf & vbCrLf
Loop
Debug.Print i


добавлено Dr. YankeeDoodle - [mergetime]1244066471[/mergetime]
Код:
Private Function f(y0, y1)
    f = 0.5 * ((y1 / (y0 + 2)) + y1)
End Function
Piroman
Всем спасибо!
Упрощенная версия форума. Для перехода в полную нажмите на эту ссылку.
Invision Power Board © 2001-2025 Invision Power Services, Inc.