Форум программистов, компьютерный форум, киберфорум
Python: Научные вычисления
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
-30 / 13 / 1
Регистрация: 18.12.2018
Сообщений: 422
1

Как взять предпоследнюю итерацию цикла while?

16.12.2019, 00:02. Показов 2145. Ответов 4

Author24 — интернет-сервис помощи студентам
Пишу задачу с циклом while, чтобы он работал пока точность > 0.001:
Python
1
2
3
4
5
6
7
8
9
10
11
delta = 1
k = 0
while delta > 0.001: #условие выхода из цикла
    f_vec = func_vector(x)
    gr_f = gradient_f(x)
    multarr_for_res = np.dot(gr_f.transpose(),f_vec) #W(p)*f(p)
    x_res = x - step_size(f_vec,gr_f)*multarr_for_res
    delta = abs(x_res[1] - x[1])
    k += 1
    print(f'delta{k}:{delta}')  
    x = x_res
Код
delta1:0.10093294359681473
delta2:0.06685612439083383
delta3:0.026457202590271373
delta4:0.011719995856551008
delta5:0.004024377322352335
delta6:0.0002216144550184207
Мне нужны результаты расчетов из delta5, поскольку эта точность удовлетворяет условиям задачи, но судя по выводу, видно что цикл работает при delta6, которая уже < 0.001. Как остановить итерацию на delta5, то есть на предпоследней итерации?
На 4-7 строки не обращайте внимания, они никакого отношения к вопросу в данном случае не имеют, мне лишь бы на delta5 цикл остановить
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.12.2019, 00:02
Ответы с готовыми решениями:

Как в C++ запустить текущую итерацию цикла заново
оператор continue переходит к следующей итерации , а мне нужно ещё раз эту же прогнать

Как правильно вывести каждую итерацию цикла сортировки выбором
#include&lt;iostream&gt; #include&lt;conio.h&gt; #include&lt;cstdlib&gt; #include&lt;ctime&gt; using namespace std;...

Как реализовать переход на следующую итерацию внешнего цикла из вложенного?
Есть ли способ завершить или продолжить внешний цикл из вложенного? Пример : for (i = 0; i &lt; 10;...

Как реализовать переход на следующую итерацию внешнего цикла из вложенного?
Добрый вечер. Возможен ли в C++ переход на следующую итерацию внешнего цикла из вложенного? ...

4
3 / 3 / 0
Регистрация: 29.12.2017
Сообщений: 12
16.12.2019, 00:53 2
Можно добавить один if, проверяющий значение, которое присвоят delta:
Python
1
2
3
4
5
6
7
8
9
10
11
12
delta = 1
k = 0
while delta > 0.001: #условие выхода из цикла
    f_vec = func_vector(x)
    gr_f = gradient_f(x)
    multarr_for_res = np.dot(gr_f.transpose(),f_vec) #W(p)*f(p)
    x_res = x - step_size(f_vec,gr_f)*multarr_for_res
    if abs(x_res[1] - x[1]) > 0.001:
        delta = abs(x_res[1] - x[1])
        k += 1
        print(f'delta{k}:{delta}')  
        x = x_res
0
578 / 411 / 68
Регистрация: 09.01.2018
Сообщений: 1,361
16.12.2019, 11:37 3
Не работает ваш цикл при delta6, вы ошиблись в логике.
Вывод delta6 вы проводите после окончания расчета пятого шага, а не в начале шестого! Т.е. у вас прошел расчет пятого шага, пересчитали дельту (delta6), ткнулись в цикл и не выполнив его выскочили из программы.
Хотите удостовериться - поставте вывод print(f'delta{k}:{delta}') между строкой 3 и строкой 4.
0
-30 / 13 / 1
Регистрация: 18.12.2018
Сообщений: 422
16.12.2019, 11:54  [ТС] 4
passant, то есть код делает рассчеты пятого шага, и после этого считает delta6, а потом он проверяет в цикле while результат delta6 и выходит из него, поскольку delta6 уже <0.001? И в итоге у меня все таки решения 5-го шага получается?
0
578 / 411 / 68
Регистрация: 09.01.2018
Сообщений: 1,361
16.12.2019, 16:13 5
Да. А вы переставили вывод так, как я рекомендовал?
0
16.12.2019, 16:13
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.12.2019, 16:13
Помогаю со студенческими работами здесь

Прервать итерацию цикла for
Здравствуйте. Есть цикл For i = 10 To 60 внутри цикла есть условие при котором нужно перейти...

Добавлять next() каждую итерацию цикла
Всем привет такой вопрос, мне требуется в цикле проверять каждый следующий элемент в списке (это...

Не осуществляется переход на следующую итерацию цикла
Здравствуйте! Сделал простейший калькулятор на C#, чтобы вспомнить основы языка. В конце, вместо...

Выход из цикла и переход на следующую итерацию
как в в 1С сделать выход из цикла или перейти на следующую итерацию в цикле??... в С++ это...

break из вложенного цикла прерывает итерацию и объемлющего
//#define CF #include &lt;cstddef&gt; #ifdef CF #include &lt;iostream&gt; #else #include &lt;fstream&gt; #endif...

Как взять данные переменной с одного цикла в другой?
Пишу программу, где человек может выучить слова на английском. В конце хочу сделать проверку, но не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru