![]() |
|
![]() ![]() ![]() |
|
FortranTamer |
|
|||
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 10.12.2010 Репутация: нет Всего: нет |
Господа, здравствуйте! Надеюсь на вашу помощь!
Предыстория: нужно освоить фортран (FPS 4.0) на нормальном уровне, на нем никогда раньше не работал. Описание проблемы: Клепаю простые задачки просто в целях знакомства с языком и не заморачиваясь на красоту и стройность алгоритма. Написал следующую программулину: Program Optimal Path Real :: k, V1=6, V2=4, x=0, t, deltat=10 write (*, 100) "first velocity, m/s ", V1 write (*, 100) "second velocity, m/s", V2 100 format (A, //) t=((x**2+3**2)**0.5)/V1+(((10-x)**2+3**2)**0.5)/V2 k=1 do while (abs (deltat) > 0.000001) x=x+k deltat=t-(((x**2+3**2)**0.5)/V1+(((10-x)**2+3**2)**0.5)/V2) t=((x**2+3**2)**0.5)/V1+(((10-x)**2+3**2)**0.5)/V2 write (*,*) t, " ", x if (x+k>8) then k=k/10 x=7.2 end if end do write (*,*) x write (*,"(A10)") t read (*,*) end Условие задачи премерно такое (если это окажется важным, если нет - можно просто байпасировать): есть площадка 6*10 метров. половина (3*10) залита бетоном, другая половина засыпана песком. Агрегат премещается из одного угла в диагонально противоположный. Скорость движения по бетону - 6м/с, по песку - 4м/с. Определить, через какую точку границы бетон/песок должен пройти агрегат, чтобы время прохождения оказалось минимальным. Вопрос: Конечно, решение корявое и не совсем корректное, но это для меня сейчас не важно. Больше смущает представление результата Фортраном. Он выдает непонятные загагулины (см.прикрепленный файл). Т.е. возмущение вызывают следующие моменты: 1) почему write (*, 100) "first velocity, m/s ", V1 - выводит irst... - первый символ потерян! А 100 format (A, //) выводит какие-то кракозябры, вместо цифирок? 2) почему арифметика сбивается на цифирках 7,5 дальше: 7,599999; 7,699999 и т.п. до конца? 3) и опять же в конце кракозябры. 4) да и как перености формулу, если она превышает установленную длину строки? Это сообщение отредактировал(а) FortranTamer - 10.12.2010, 10:18 Присоединённый файл ( Кол-во скачиваний: 3 ) ![]() |
|||
|
||||
FCM |
|
||||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 461 Регистрация: 30.3.2009 Репутация: 8 Всего: 9 |
Может лучше осваивать сразу современные фортран-компиляторы? В старинных фортранах 1-ая позиция записи не выводится - поэтому обычно формат начинали с 1X, т.е. с переходом на 2-ую позицию. Что касается формата, то он задан неправильно, поскольку не задан дескриптор формата для REAL-числа.
Потому что аппаратно под каждое число отводится конечное число бит (это для всех языков программирования!) => не каждое число может быть представлено точно. Обычно в расчетах пользуются точностью REAL(8), а REAL(4) это что-то вроде "бесплатного приложения".
Если файл с расширением .f90, то поставь & после первой части формулы. Это сообщение отредактировал(а) FCM - 11.12.2010, 16:52 |
||||||
|
|||||||
![]() ![]() ![]() |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Fortran | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |