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

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

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

Студворк — интернет-сервис помощи студентам
Пишу задачу с циклом 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
Code
1
2
3
4
5
6
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
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
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; void vvod_klav(int *a, int n)...

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

4
3 / 3 / 0
Регистрация: 29.12.2017
Сообщений: 12
16.12.2019, 00:53
Можно добавить один 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 / 69
Регистрация: 09.01.2018
Сообщений: 1,363
16.12.2019, 11:37
Не работает ваш цикл при delta6, вы ошиблись в логике.
Вывод delta6 вы проводите после окончания расчета пятого шага, а не в начале шестого! Т.е. у вас прошел расчет пятого шага, пересчитали дельту (delta6), ткнулись в цикл и не выполнив его выскочили из программы.
Хотите удостовериться - поставте вывод print(f'delta{k}:{delta}') между строкой 3 и строкой 4.
0
14 / 13 / 1
Регистрация: 18.12.2018
Сообщений: 422
16.12.2019, 11:54  [ТС]
passant, то есть код делает рассчеты пятого шага, и после этого считает delta6, а потом он проверяет в цикле while результат delta6 и выходит из него, поскольку delta6 уже <0.001? И в итоге у меня все таки решения 5-го шага получается?
0
578 / 411 / 69
Регистрация: 09.01.2018
Сообщений: 1,363
16.12.2019, 16:13
Да. А вы переставили вывод так, как я рекомендовал?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.12.2019, 16:13
Помогаю со студенческими работами здесь

Как реализовать переход на следующую итерацию внешнего цикла из вложенного?
Добрый вечер. Возможен ли в C++ переход на следующую итерацию внешнего цикла из вложенного? например: for(int i=0;i&lt;n;i++) ...

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru