Я використовую Fortran для ітеративного вирішення системирівнянь, але не хочуть знати результат після кожної ітерації. Моя фактична система набагато більша і вимагає приблизно 100 000 ітерацій для рішення, але, будь ласка, врахуйте цей простий приклад, який виконує 100 ітерацій.
PROGRAM ITER
DATA X1,X2,X3/.0,.0,.0/
DO 20 K = 1,100
X1 = 10+3*X2 - X3
X2 = (4 - 2*X1 - X3)/5.
X3 = (-13 + X1 - X2)/(-2.)
WRITE (*,10)K,X1,X2,X3
10 FORMAT (" ",I3,3(F8.1))
20 CONTINUE
END PROGRAM ITER
Програма повідомляє про результат після кожної ітерації, але я хотів би, щоб значення X1, X2 і X3 були повідомлені після кожні 10 ітерацій.
Я спробував додати вкладений оператор IF уцикл DO, але я отримую помилку від компілятора. Мені цікаво, чи можна надрукувати значення X1, X2 і X3, коли K (крок ітерації) кратний 10. Тому можна розділити K на 10, а потім, коли результат є цілим числом, значення X1, X2 і X3 виходять?
Я сподіваюся, що це зрозуміло. Спасибі за вашу допомогу.
Відповіді:
4 для відповіді № 1if (mod(k,10)==0) WRITE...
Просто скористайтеся мод функція(залишок або модуль) у if
умова виконати запис лише тоді, коли k
ділиться на 10
.