Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы программирования на FORTRAN (ФОРТРАН)

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329

Открыть новую тему     Написать ответ в эту тему

akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Обсуждаются все вопросы, связанные с программированием на ФОРТРАН, как общего так и конкретного характера.
Постарайтесь дать как можно больше информации о возникшей проблеме -- это в конце концов в ваших же интересах чтобы вам помогли...

прежде чем просить помощи в задании
платное решение задач

ресурсы этого топика
ссылка на подборку ресурсов, собранных посетителями этого форума
 
то, чем мы решили поделиться
ссылка на страничку программ etc собственного изготовления, которыми любезно делятся наши форумчане


если вам вдруг не отвечают или ответ вас не устраивает
и вообще полезно прочитать всем спрашивающим
 
просьба к пишущим и отвечающим все большие листинги оформлять тегом more
и отключать графические смайлики при размещении фортран-кода

Всего записей: 24056 | Зарегистр. 06-12-2002 | Отправлено: 18:11 14-01-2007 | Исправлено: akaGM, 09:47 01-03-2020
Andrew10

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ne_viens

Цитата:
MSVC такое делает при помощи /MD свича (cl.exe /MD main.c + cl.exe /MD /LD sub_test.c)  

 
У ifort есть такой же точно ключ /MD. Указал его явно при создании dll и main, и все сработало!
 
Очень важная и полезная для меня информация!  
 
Спасибо!!!
 

Всего записей: 780 | Зарегистр. 26-02-2005 | Отправлено: 13:35 11-03-2014
XPEHOMETP

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вроде, тут не пробегало:  
 
Горелик Алла Моисеевна. Программирование на современном Фортране. Формат djvu. Качается без регистрации и прочих неудобств.

Всего записей: 2485 | Зарегистр. 21-06-2005 | Отправлено: 09:33 19-03-2014
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
пробегало и неоднократно и зафиксировано в форуме № 93
но всё равно не помешает...

Всего записей: 24056 | Зарегистр. 06-12-2002 | Отправлено: 13:59 19-03-2014
VitaliM



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Может кто-нибудь подсказать с чем это может быть связано. После выполнения подпрограммы результат возвращается в переменной типа real(4). При компиляции в режиме debug и в режиме release результаты отличаются начиная примерно с 5 знака после запятой. Подпрограмма находится в dll. Вызов осуществляется в Delphi (2010). Причем та же подпрограмма, запрограммированная в Delphi, не зависимо от режима компиляции (debug или release для Delphi) выдает одинаковый результат, совпадающий с результатом выполнения фортана в режиме debug.  При компиляции фортрана используются ран-тайм библиотеки фортрана. Может в них кроется различие в результатах?
 
PS. Забыл упомянуть, что речь идет о CVF 6.6

Всего записей: 2180 | Зарегистр. 12-01-2005 | Отправлено: 12:46 22-03-2014 | Исправлено: VitaliM, 13:52 22-03-2014
Vskazka

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
VitaliM
Не столь важно, в какой переменной (real(4) или real(8)) возвращается результат вычислений. Важнее разрядность переменных, с которыми расчет производится.  
 
На вскидку, различие дебагерной и релизной версии мб в следующием
1. Промежуточные вычисления не вынимаются из стека сопроцессора (они там все 10 байтные - во всяком случае при вычислениях с восьмибайтными числами) и используются как есть (то есть не отправляются обратно в оперативную память, с последующим закидыванием опять в стек сопроцессора).
2. Происходит так называемая потеря точности (при которой сложение нескольких чисел, например, зависит от того в какой последовательности складываешь) И если дебагерный вариант делает, вроде бы,  как написано, то как складывает релизный (если нет скобок, указывающих порядок) - Бог ведает.

Всего записей: 382 | Зарегистр. 24-11-2003 | Отправлено: 18:21 22-03-2014
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
VitaliM
 
насколько я помню, в старых дельфи sizeof(real) = 6, а не 4
 
Добавлено:

Цитата:
Вызов осуществляется в Delphi (2010).
извиняюсь, проглядел...
 
мне кажется это не лечится, так и будет всегда...

Всего записей: 24056 | Зарегистр. 06-12-2002 | Отправлено: 23:58 22-03-2014
VitaliM



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
akaGM
Все правильно, только у меня в фортране real(4), а в Дельфи single.
И в 2010 Дельфи real (real48) тоже 6 байт ( для совместимости).

Всего записей: 2180 | Зарегистр. 12-01-2005 | Отправлено: 00:00 23-03-2014 | Исправлено: VitaliM, 12:06 23-03-2014
plazmon



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
VitaliM
Скорее всего Vskazka прав.
В релизной версии промежуточные вычисления остаются на стеке сопроцессор ( и имеют точность 10-байт), а в дебажной - все промежуточные данные переносятся в память ( а вдруг ты на них захочешь посмотреть) и, соответственно, усекаются.
А в целом такое поведение свидетельствует о плохой устойчивости алгоритма.

Всего записей: 107 | Зарегистр. 29-05-2007 | Отправлено: 01:23 24-03-2014 | Исправлено: plazmon, 01:24 24-03-2014
Igorr

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
VitaliM
одинаковые ли в debug и release опции /[no]fltconsistency и /fast (/assume:[no]accuracy_sensitive)?

Всего записей: 2003 | Зарегистр. 01-05-2002 | Отправлено: 02:34 24-03-2014
VitaliM



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Igorr
В IDE VS таких опций я не нашел, а с командной строки компилировать не силен.
Спасибо за участие, только я потыкался где смог и бросил.
 
Меня вот другой вопрос измучил, может кто подскажет. К фортрану как бы отношения не имеет, но только тут в топике, похоже, разбирающиеся в математике живут. Так вот, есть прибор с датчиком на палец. Он измеряет  кровоток на просвет (получаемые данные называются "сфигмограмма"). Проблема в том что сигнал через прибор, USB-драйвер и спец. dll поступает в программу в виде некоторой последовательности чисел с дискретностью 1 мсек. Опрашивать прибор вызовом из этой dll надо не реже 1 раза в 500 мсек, иначе будет переполнение и потеря данных. Так вот значение этого сигнала может блуждать от 0 до ~65000 ед (тип integer(4) беззнаковый). Для иллюстрации как выглядит блуждание сигнала, вот  график за 130 сек., пики на гребенке - это удары сердца. Задача стоит такая, надо как-то обуздать это блуждание, т.е. преобразовать входной потоковый сигнал так, что бы его можно было отобразить графически как более-менее ровную полосу колебаний (назовем её ЭКГ, так понятнее), плавный небольшой уход вверх или вниз вполне допустим. Основное требование это то что сигнал потоковый и накопить, а потом обработать нельзя, можно обрабатывать только то что уже пришло и как-то на базе этой информации преобразовывать поступающие данные и сразу показывать графически в реальном масштабе времени.  
 
Если есть какие-нибудь мысли, в каком направлении искать решение, прошу поделиться. В высшей математике не слишком силен, поэтому чем проще, тем лучше.

Всего записей: 2180 | Зарегистр. 12-01-2005 | Отправлено: 22:45 02-04-2014 | Исправлено: VitaliM, 23:09 02-04-2014
FuzzyLogic



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
VitaliM
Скользящая средняя не подойдёт?

Всего записей: 1920 | Зарегистр. 27-07-2002 | Отправлено: 23:52 02-04-2014
VitaliM



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
FuzzyLogic
Нет, не подойдет. Вид и форма ЭКГ должна остаться. Просто сама ЭКГ должна перестать бегать вверх-вниз. А скользящая средняя как раз уберет ЭКГ и оставит изменение средней, которая повторит блуждание вверх и вниз. Я уже пробовал, получилось не так.
PS. Сразу не додумался (см. посты ниже), идея хорошая. Спасибо!

Всего записей: 2180 | Зарегистр. 12-01-2005 | Отправлено: 08:30 03-04-2014 | Исправлено: VitaliM, 09:45 03-04-2014
plazmon



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
VitaliM
А что если наоборот, вычитать из сигнала скользящее среднее?

Всего записей: 107 | Зарегистр. 29-05-2007 | Отправлено: 08:59 03-04-2014
VitaliM



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
plazmon
Надо попробовать, может получиться.. Спасибо.

Всего записей: 2180 | Зарегистр. 12-01-2005 | Отправлено: 09:06 03-04-2014
Igorr

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
VitaliM
Цитата:
Igorr  В IDE VS таких опций я не нашел

Цитата:
PS. Забыл упомянуть, что речь идет о CVF 6.6

Всего записей: 2003 | Зарегистр. 01-05-2002 | Отправлено: 18:09 04-04-2014
VitaliM



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Igorr
А что не так?
В CVF 6.6 используется IDE Visual Studio 6, и дополнение к родным опциям Студии есть опции Фортрана.
Вот там я этого не нашел, ни в опциях фортрана,  ни в других.
Возможно, вы привели опции, которые есть в Intel Fortran..
 
Добавлено:
plazmon

Цитата:
если наоборот, вычитать

Все получилось, только не удается побороть отставание скользящего среднего от реального тренда.
Есть некоторое биение полученного сигнала.

Всего записей: 2180 | Зарегистр. 12-01-2005 | Отправлено: 17:14 05-04-2014
Igorr

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
VitaliM

Цитата:
В CVF 6.6 используется IDE Visual Studio 6

А что, у вас help не установлен? Без него - тяжеловато.

Всего записей: 2003 | Зарегистр. 01-05-2002 | Отправлено: 18:03 05-04-2014
Purple Elf



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый день
 
Имеется задача вычисления arcsin (из книги Рыжикова "Современный Фортран")
 
Вот сама функция
 

Код:
program test
    implicit none
    integer :: iter = 12345
    real :: value = 1.0/sqrt(2.0)
    print *, 'The arcsin of ', value, ' is ', arcsin(value, iter) * 45 / atan(1.0)
contains
    function arcsin(value, iter) result(s)
        integer :: iter, i, j
        real :: value, k, s
        do i = 1, iter, 2
            k = 1
            do j = 1, i
                if (mod(j, 2) == 0 .or. j == i) then
                    k = k / j
                else
                    k = k * j
                end if
            end do
            s = s + k * value ** i
        end do
    end function arcsin
end program test
 

 
А теперь вот в чём вопрос - если в GNU Fortran она работает правильно и выдаёт 45 градусов то эта же функция скомпилированная в Intel Fortran 2013 SP1 выдаёт -6.1520865E+09. Я только второй день Фортран изучаю может это я делаю что-то не так?

Всего записей: 555 | Зарегистр. 13-09-2005 | Отправлено: 17:12 07-04-2014
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Purple Elf
 
первой строкой этой функи должна быть строка
 
s = 0.0

Код:
 The arcsin of   0.7071068      is    45.00000    

 
Добавлено:
 
минус гфортрану и зачёт интеловскому...
 
Добавлено:
 
ну и заодно Рыжикову тоже минус :)

Всего записей: 24056 | Зарегистр. 06-12-2002 | Отправлено: 18:06 07-04-2014
Purple Elf



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
akaGM
Спасибо за ответ. Минус не Рыжикову а мне. В его книге просто описано задание а как его сделать зависит от читателя. Я третий день Фортран изучаю и уже вижу что изложение материала намного лучше чем у тех же Немнюгина и Стесик.

Всего записей: 555 | Зарегистр. 13-09-2005 | Отправлено: 04:29 08-04-2014
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы программирования на FORTRAN (ФОРТРАН)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru