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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.04.2014, 18:09   #1
yulia.a
Пользователь
 
Регистрация: 08.03.2014
Сообщений: 21
По умолчанию Итерационные циклы

Вот программа (задание прикреплено), работает, все отлично.
Но единственный вопрос: почему в переменной z (сразу после repeat) берется только то, что находится в скобках итерации y, а не всё выражение целиком?

Код:
Program LAB;
  Var
    n,k:integer;
    eps,z,x,y:real;
  Begin
    eps:=0.001;
    writeln(‘Введите степень корня n’);
    read(n);
    x:=pi/3;
    k:=0;
    y:=x;
    repeat
      z:=(x/exp(ln(y)*(n-1))-y)/n;
      k:=k+1;
      y:=y+z;
    until abs(z)<=eps;
    wtiteln(‘Корень ’,n,’ степени из ’,x, ‘ =’,y);
    writeln(‘Число итераций =’,k);
End.
Изображения
Тип файла: jpg задание.JPG (16.3 Кб, 73 просмотров)
yulia.a вне форума Ответить с цитированием
Старый 19.04.2014, 18:35   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Как Вы определили, что не всё выражение берётся?
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 19.04.2014, 21:49   #3
yulia.a
Пользователь
 
Регистрация: 08.03.2014
Сообщений: 21
По умолчанию

Наверное, я все-таки не очень корректно задала вопрос свой))
Я имела в виду, что вот я присвоила переменной z то, что в скобках, почему после until погрешность(eps) должна быть больше или равна именно z по модулю, а не модулю всего выражения итерации?
Код:
 
repeat
   z:=(x/exp(ln(y)*(n-1))-y)/n;
   k:=k+1;
   y:=y+z;
until abs(z)<=eps;
Просто я делала по похожему примеру и эту часть не совсем поняла, почему именно так
yulia.a вне форума Ответить с цитированием
Старый 19.04.2014, 22:25   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Если под всем выражением итерации подразумевать новое значение y (y := y + z), то оно сходится к значению корня n-ой степени и может стать по модулю меньше eps только если этот корень и правда очень мал. Этот алгоритм поиска корня является сходящимся (по крайней мере я так предполагаю). На каждом шаге прибавляется некое корректирующее слагаемое к предыдущему значению. С каждым шагом это слагаемое монотонно уменьшается и как только оно станет по модулю меньше eps, то исчезнет необходимость дальнейших вычислений, так как требуемая точность будет достигнута.

UPD
Пожалуйста.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 20.04.2014 в 00:53.
BDA вне форума Ответить с цитированием
Старый 19.04.2014, 22:53   #5
yulia.a
Пользователь
 
Регистрация: 08.03.2014
Сообщений: 21
По умолчанию

Большое спасибо за подробное объяснение!
Теперь все понятно)
yulia.a вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Итерационные циклы Natalia91169 Помощь студентам 1 19.12.2011 19:24
(Итерационные циклы.) Загвоздка( Mr0max Паскаль, Turbo Pascal, PascalABC.NET 5 11.04.2011 11:39
(Итерационные циклы.) Загвоздка( Mr0max Помощь студентам 5 10.04.2011 23:48
Задачи на итерационные циклы ILTBW Помощь студентам 4 10.01.2009 18:01
Итерационные циклы Андрюха из ПХТТ Паскаль, Turbo Pascal, PascalABC.NET 3 14.02.2008 15:49