Я пытаюсь написать программу Fortran 90 для выполнения метода Эйлера для решения ode с использованием адаптивного шага времени.Повторение этапа в цикле Фортрана
У меня есть оператор if
внутри цикла do while
, в котором я проверяю, что ошибка на каждой итерации кода меньше определенного допуска. Однако, если это не меньше определенного допуска, я должен изменить определенное значение (размер шага) и выполнить расчет снова, чтобы получить новую ошибку для сравнения с допуском.
Это выглядит примерно так (и простите меня, это мой первый раз с помощью этого веб-сайта):
do while (some condition)
(Get an approximation to the ODE with various subroutine calls)
(Calculate the error)
if (error < tol)
step = step/2
else
step = 2*step
(Something that will return to the top of my do while loop)
end if
end do
Скажем, например, у меня был do while (i < 4)
, где i
начинается на 1, и моя ошибка была не менее моя терпимость, мне пришлось бы снова повторить вычисление для i=1
с новым размером шага.
Надеюсь, это имеет смысл для тех из вас, кто это прочитал. Если вам нужно какое-либо разъяснение, дайте мне знать.
И что, если это был обычный цикл? Благодаря! – Sorey
Было бы одинаково. Но вы должны думать о прилавке. «Цикл» переходит к следующей итерации и увеличивает счетчик. Это может быть хорошо или нет, это зависит от вашего использования. Или вы всегда можете использовать 'goto'. Или вы можете иметь еще один вложенный цикл внутри основного цикла. –
Проблема в том, что вы говорите «например, я делал while (i <4)», но неясно, как вы меняете «i» и когда, поэтому вы должны знать, что делать, мы не видим его в ваш код. –