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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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 330

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

akaGM

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

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

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


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

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



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

Цитата:
с ужасом жду когда всё это посыпится...

Точнее - посыпиться
А что: Всё это?

Всего записей: 232 | Зарегистр. 24-07-2005 | Отправлено: 02:36 09-04-2020
KChernov



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Eugeen
1. Так у знатоков своих кодов хватает. И действительно знаток не будет вслепую использовать чужой код. Разве что это хорошо документированная библиотека. Я в подобных ситуациях разбирался в алгоритме и переписывал с нуля только части, которых действительно нет в библиотеках.
2. Это я про себя писал. ФЭИ в Обнинске.
3. Ну вообще 150к для Москвы - не особо большие деньги для специалистов подобного уровня (особенно после 2014). Хотя если вместе с загранкомандировками, то может и неплохо получаться.
Но в Обнинске и такого не предлагали (только обещали), а по Москве подобные вакансии не попадались.
Фортран используется там, где под него много написано. В международной научной среде в первую очередь.
А на Питоне вычислительные алгоритмы и не пишут - как правило его использует как обвязку/скриптовый язык для работы с библиотеками, написанными в первую очередь на С/С++ (но Фортрановские тоже можно).
4. Только там это в первую очередь нужно было, чтобы экономить дефицитную тогда память.
А щас это усложняет работу с чужим кодом.
Да и нет этого в вашем примере.
Современный С/С++ всё это тоже позволяет делать, но с лучшим уровнем контроля (но кода больше получается, да).
5. Имхо тут и без несократимых дробей проблема - я про неё чуть ли не прямым текстом написал:
У вас сокращение дробей сделано в лоб перебором с дискретностью 1.
А алгоритм Евклида для поиска НОД, как вы понимаете, известен давно и значительно эффективнее.
А это сокращение производится у вас практически при каждом вычислении.
И как во-вашему можно воспринимать код, в котором чуть ли не ключевая операция алгоритмически без намёка на оптимальность? Я подобный код воспринимаю как халтуру. И если бы там был реализован хотя бы НОД, то тот же БЭСМ-6 выдавал бы результат минимум вдвое быстрее.
 

Цитата:
А что: Всё это?  

Это он об отказах из-за программных ошибок из-за дефицита специалистов по Фортрану.
 
akaGM

Цитата:
с ужасом жду когда всё это посыпится...

Так оно и сыплется периодически
На той же Фукусиме японцы забили на безопасность большой и толстый
Но именно из-за Фортрана это вряд ли случится

Всего записей: 2471 | Зарегистр. 20-04-2004 | Отправлено: 04:49 09-04-2020 | Исправлено: KChernov, 13:52 09-04-2020
SergeSerge3leo



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

Цитата:
5. Что касается решения задач в простых дробях, то я ни разу не наблюдал катастрофического роста несокращаемых дробей. Может знатоки подскажут такой пример?

Хм. Если все "простые дроби" во входной матрице имеют одинаковый знаменатель, скажем, 10000, то имеем ограничения похожие на ограничения обычной арифметики с фиксированной точкой и обычную проблему переполнения (несокращаемых числителей), которую легко математически оценить. Ясное дело, 32 бита числителя (integer*4) требует достаточно хороших и/или небольших матриц.
 
Если же все "простые дроби" случайные, скажем, числители и знаменатели в диапазоне 1..31, то поскольку 2*3*5*7*11*13*17*19*23*29 > 231 знаменатель переполнится в матрицах совсем совсем небольшого размера.
 
P.S.
Да, Вы же просили примеры:
sum(1/k, k = 1 .. 31) = 290774257297357 / 72201776446800
sum(1/k, k = 1 .. 100) = 14466636279520351160221518043104131447711 / 2788815009188499086581352357412492142272
sum(1/k, k = 1 .. 300) = 1155845629830378705676923007631804514744715994535227312944748381171476491727290835689583634441323657793325314382370025238980637607 / 183973812995909931088358644366232200921612854652663374268720829648680278563543357948435787798951318481034810987982367438330656000

Всего записей: 101 | Зарегистр. 01-08-2011 | Отправлено: 05:10 09-04-2020 | Исправлено: SergeSerge3leo, 05:51 09-04-2020
akaGM

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

Цитата:
Так оно и сыплется периодически
да, "сыплется" мне больше нравится :)

Цитата:
Это он об отказах из-за программных ошибок из-за дефицита специалистов по Фортрану.
не так уж конкретно, но на политическом аспекте я заострять не буду и пусть будет как сказано...
 
помнится в году так 2005-ом вроде здесь же (ого как давно!), я писал об аварии французской Ариан, причиной кот. стала ошибка в бортовом софте при определении эйлеровых углов (С, приведение типов+округление)...
 
и правильно ты гришь, на питоне никто не пишет монстров, а юзает десятилетиями отлаженный Фортран/Си код известных библиотек

Всего записей: 24113 | Зарегистр. 06-12-2002 | Отправлено: 06:43 09-04-2020
KChernov



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

Цитата:
Ясное дело, 32 бита числителя (integer*4) требует достаточно хороших и/или небольших матриц.
 
Если же все "простые дроби" случайные, скажем, числители и знаменатели в диапазоне 1..31, то поскольку 2*3*5*7*11*13*17*19*23*29 > 231 знаменатель переполнится в матрицах совсем совсем небольшого размера.  

Ну вообще уже лет 15 как доступна аппаратная реализация операций с 64-битными целыми
Или оно не сильно решает проблему?
Есть вообще какие оценки по этому поводу? Что стоит почитать?
 
Или в принципе подобное решение плохо масштабируемо и лучше тогда уж сразу представлять числитель и знаменатель в виде разложения на простые множители?
Есть щас какие-либо топбест решения? Или просто никто не заморачивается с точными решениями?
 

Цитата:
Да, Вы же просили примеры:  

А подобные получающиеся дроби точно несократимые?
Ведь как минимум там будут играть роль знаменатели только в виде простых чисел - все остальные не будут увеличивать знаменатель + числитель будет несократим лишь в случае, если он сам простое число.
 
 
akaGM

Цитата:
не так уж конкретно, но на политическом аспекте я заострять не буду и пусть будет как сказано...  

Если речь про соседей, то думаю, что здравый смысл всё же победит.
Ибо, с одной стороны, подобные катастрофы всегда глобального масштаба - от той же Фукусимы Штатам чуть ли не больше всех досталось (после самой Японии конечно)
А с другой стороны, наибольшая интенсивность всё же вокруг источника загрязнения, и это надо быть полным дауном, чтобы в первую очередь гробить свою территорию
 

Цитата:
помнится в году так 2005-ом вроде здесь же (ого как давно!), я писал об аварии французской Ариан, причиной кот. стала ошибка в бортовом софте при определении эйлеровых углов (С, приведение типов+округление)...  

На реакторах защита получше будет. В том числе и потому, что вес экономить не нужно
Но вот бывает, что и на орбиту реакторы выводят - вот там как решается проблема безопасности, я не знаю

Всего записей: 2471 | Зарегистр. 20-04-2004 | Отправлено: 14:09 09-04-2020 | Исправлено: KChernov, 14:15 09-04-2020
Eugeen



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Прога придумана для плохо обусловленных матриц коэффициентов., когда на главной диагонали нет доминирования. Вы можете придумать примеры типа дроби 100000000\1 вне главной диагонали и 1\10000000 на ней и посмотреть работу в принципе (естественно с Вашим улучшенным алгоритмом) Я это пробовал на БЭСМ-6, но тогда память была маловата, сейчас модно сделать огромную матрицу. Еще одно соображение - при получении большой несокращаемой дроби (а это весьма большое число знаков) можно без существенной потери точности вычесть 1 из наибольшего (числителя или знаменателя) и сократить дробь.  
Короче это хорошая статья в математический журнал для Вас.
 
Добавлено:
Что касается безопасности АЭС, то скажу следующее. Для ВВЭовских АЭС (ВВЭР-1000, 120, RWR) меры безопасности усилены - даже ставится УРЛ (ловушка расплавленной активной зоны при запроектных авариях, когда другие штатные меры уже не работают).
Хуже дела с терроризмом.
Слава богу в Российских проектах АЭС (которые несведущие ругают за дороговизну строительной части) бассейн выдержки (БВ) отработанного топлива (а это по объему 3 активных зоны с полным набором радионуклидов!0 находится под защитной оболочкой,которую довольно проблематично разрушить. А вот в западных и китайских-корейских "экономичных" проектах БВ находится за пределами ЗО и накрыт плитами из Ж/Б в 20 см. Любой паршивый дрон с бомбочкой ночью раздолбает эти плиты и Фукусима с Чернобылем покажутся детской забавой. Особенно если учесть что в отработанном топливе накапливается до 4 кг Америция 241. Америций-241 – самый мощный компонент грязного оружия массового поражения, выводящий территории из строя на несколько тысячелетий.
Сейчас особенно французы до крови чешут репу, как укрепить БВ и предотвратить теракты на АЭС, но пока никакого решения нет, кроме как над каждым БВ строить ЗО. А это сумашедшие затраты. Так что российские спецы еще кое что значат.

Всего записей: 232 | Зарегистр. 24-07-2005 | Отправлено: 16:12 09-04-2020 | Исправлено: Eugeen, 16:31 09-04-2020
SergeSerge3leo



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

Цитата:
Ну вообще уже лет 15 как доступна аппаратная реализация операций с 64-битными целыми  
Так и да, у многих реализаций Фортран есть поддержка 128 битных `integer(16)'.
 
Впрочем, за БЭСМ-6 точно не скажу, а у БЭСМ-4 была команда "Выдача младших разрядов произведения" и поддержка её Алголом, которая позволяла, как реализовать эффективные 72-бит целые и вообще многократной точности, так и полностью использовать 36 бит для рациональных чисел.
 
Eugene
У Вас тоже точно не скажу, т.к. ваш код даже не собирается, но сдаётся мне, что он не сможет сложить что-либо сложнее чем: 1/32771 + 1/65537, т.е. возможности БЭСМ-6, похоже на то, что не использовались.
 
KChernov

Цитата:
Или оно не сильно решает проблему?  
Есть вообще какие оценки по этому поводу? Что стоит почитать?  
Вообще не решает проблему. По ссылке выше о double-double есть и реализация многократной точности для современного Fortran.
 
А так, люди исследуют "приближенные рациональные числа" и "цепные дроби".

Цитата:
А подобные получающиеся дроби точно несократимые?  
Ведь как минимум там будут играть роль знаменатели только в виде простых чисел - все остальные не будут увеличивать знаменатель + числитель будет несократим лишь в случае, если он сам простое число.  

Точно несократимые. Можете проверить:
sum(1/k, k = 1 .. 100) = 14466636279520351160221518043104131447711 / 2788815009188499086581352357412492142272 = (620890830471983*1012*2284070837741348234617) / (97*83*73*67*59*47*41*31*23*17*11*26*34*72*13*19*29*37*43*53*61*71*79*89)
 
И для вычисления требуется получать старшую/младшую часть от произведений 134 битных чисел, минимум.
 
Замечу также, что для равенства НОД(знаменатель1, знаменатель2) .eq. 1 вовсе не требуется, что б один из знаменателей был простым. Надеюсь термин "взаимопростые" Вам знаком?
 
P.S.
Eugene

Цитата:
Прога придумана для плохо обусловленных матриц коэффициентов., когда на главной диагонали нет доминирования

Я так понимаю, с линейной алгеброй в те годы дружбы не было? И разложение Холецкого, QR-разложение и сингулярное разложение (SVD) были тогда недоступны?

Цитата:
Вы можете придумать примеры типа дроби 100000000\1 вне главной диагонали и 1\10000000 на ней и посмотреть работу в принципе  

Извините, но повторюсь, к сожалению, код нерабочий, от слова совсем. А если применить мозг и творчески доработать до рабочего, то от "на ней" не останется ни одного байта.

Всего записей: 101 | Зарегистр. 01-08-2011 | Отправлено: 16:37 09-04-2020 | Исправлено: SergeSerge3leo, 17:25 09-04-2020
KChernov



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

Цитата:
посмотреть работу в принципе (естественно с Вашим улучшенным алгоритмом)

Сейчас я численными методами не занимаюсь
Надеюсь когда-нибудь добраться
 

Цитата:
Я это пробовал на БЭСМ-6, но тогда память была маловата, сейчас модно сделать огромную матрицу.

Так в том-то и дело (и на это и я , и SergeSerge3leo указываем), что уже давно актуальны именно большие размерности, которые в силу ограниченности железа были неактуальны даже в 90-е
Например задача 3д расчёта АЗ до сих пор на грани возможности - всё равно приходится использовать упрощения и эмпирику
 

Цитата:
Еще одно соображение - при получении большой несокращаемой дроби (а это весьма большое число знаков) можно без существенной потери точности вычесть 1 из наибольшего (числителя или знаменателя) и сократить дробь.  

С одной стороны, мысль такая приходила
Но с другой стороны, как минимум надо делать оценку получающейся погрешности
Да и нет никакой гарантии, что после деления на 2 мы опять не получим простое число - и на до понимать, когда необходимо остановиться
 

Цитата:
Короче это хорошая статья в математический журнал для Вас.  

Я уже 5 лет как не в науке. А поскольку я так и не защитился, то вернуться не так просто
 

Цитата:
Что касается безопасности АЭС, то скажу следующее. Для ВВЭовских АЭС (ВВЭР-1000, 120, RWR) меры безопасности усилены  

Про нашу безопасность я более-менее в курсе - беспокоит именно то, что работает там, и в первую очередь у ближайших соседей
 
 
SergeSerge3leo
А можно всё-таки как-то разделять, кому и на что отвечаете
А то в сочетании с Вы с большой буквы странно смотрится
 

Цитата:
Замечу также, что для того, НОД(знаменатель1, знаменатель2) .eq. 1 вовсе не требуется, что б один из знаменателей был простым. Надеюсь термин "взаимопростые" Вам знаком?  

Спасибо, я в курсе и ничего противоречащего и не писал

Всего записей: 2471 | Зарегистр. 20-04-2004 | Отправлено: 17:16 09-04-2020
SergeSerge3leo



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

Цитата:
А можно всё-таки как-то разделять, кому и на что отвечаете  
Извините, я, как бы, запутался и отвечал на Вашу реплику, как на реплику Eugeen
 

Всего записей: 101 | Зарегистр. 01-08-2011 | Отправлено: 17:21 09-04-2020
KChernov



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

Цитата:
И разложение Холецкого, QR-разложение и сингулярное разложение (SVD) были тогда недоступны?  

Вообще на БЭСМ-6 это всё было доступно - мой шэф этим как раз занимался
Но к сожалению как правило все варились (да и щас зачастую варятся) в собственном котле - в первую очередь потому, что иначе нужно делиться деньгами. Ну и секретность тоже вносила свой вклад.

Всего записей: 2471 | Зарегистр. 20-04-2004 | Отправлено: 17:26 09-04-2020
SergeSerge3leo



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

Цитата:
Цитата:
И разложение Холецкого, QR-разложение и сингулярное разложение (SVD) были тогда недоступны?  
 
Вообще на БЭСМ-6 это всё было доступно - мой шэф этим как раз занимался  
Но к сожалению как правило все варились (да и щас зачастую варятся) в собственном котле - в первую очередь потому, что иначе нужно делиться деньгами. Ну и секретность тоже вносила свой вклад.
Строго говоря, конечно же, отражения Хаусхолдера и вращения Гивенса для эффективного и численоустойчивого QR и сингулярных разложений придумали за несколько лет до БЭСМ-6, но ... пока они дошли до широких масс и стали более-менее модными?

Цитата:
в первую очередь потому, что иначе нужно делиться деньгами
Хм, ну тут каждый судит в меру своей меркантильности... На мой взгляд, основная проблема - поддержка и сопровождение чужого кода.  
 
А вот своё г..., как известно, не пахнет, поэтому поддержка и сопровождение получаются на порядок надёжнее, лучше и оперативнее.

Всего записей: 101 | Зарегистр. 01-08-2011 | Отправлено: 17:44 09-04-2020 | Исправлено: SergeSerge3leo, 17:54 09-04-2020
KChernov



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SergeSerge3leo
В СССР примерно тем же, чем и Холецкий, занимался Булеев. А мой шеф - его ученик. И они это всё в том числе и на БЭСМ-6 гоняли

Всего записей: 2471 | Зарегистр. 20-04-2004 | Отправлено: 17:56 09-04-2020
SergeSerge3leo



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

Цитата:
В СССР примерно тем же, чем и Холецкий, занимался Булеев.  

Andre'-Louis Cholesky (15 October 1875, in Montguyon - 31 August 1918, in Bagneux) и СССР (1922 - 1991), однако

Всего записей: 101 | Зарегистр. 01-08-2011 | Отправлено: 18:01 09-04-2020 | Исправлено: SergeSerge3leo, 18:02 09-04-2020
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
и что?
тут уж и я возбухну...
 
SergeSerge3leo

Цитата:
В СССР примерно тем же, чем и Холецкий, занимался Булеев.
читается (и понимается) как "они оба занимались сходными задачами... каждый в своё время"
это однозначно и не имеет никаких исторических ошибок

Цитата:
я [он] в курсе и ничего противоречащего и не писал

Всего записей: 24113 | Зарегистр. 06-12-2002 | Отправлено: 18:19 09-04-2020
Eugeen



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Если в несократимой дроби из примера выше: sum(1/k, k = 1 .. 31) = 290774257297357 / 72201776446800 из числителя  вычесть 1, то результат будет отличаться на -3.4390939875305444541428421975796e-13‬, что при обычной точности уже приемлемо, а если применять учетверенную точность, то  придумать реальные задачи с невозможностью считать с несократимыми дробями довольно сложно практически.
 
Добавлено:
KChernov
 

Цитата:
Строго говоря, конечно же, отражения Хаусхолдера и вращения Гивенса для эффективного и численоустойчивого QR и сингулярных разложений придумали за несколько лет до БЭСМ-6, но ... пока они дошли до широких масс и стали более-менее модными?
 

В начале 70-х Пр.В. в физрасчетах активных зон водяных реакторов на БЭСМ-6 не использовалась матричная алгебра, хотя была даже прекрасная библиотека Ст. программ из ЦЕРНа. Память была маловата даже для моделирования 1/12 активной зоны. Применялись разные методы ускорения итераций (только 2-х слойные). Настоящую революцию в этих расчетах совершил В.И. Лебедев из ИАЭ им. Курчатова. Он разработал двухслойный метод ускорения итераций с Чебышевским набором параметров, который был устойчив как и 3-х слойный Чебышев. Это позволило считать уже 1/6 АЗ (метод описан в книге Г.А. Марчук, В.И. Лебедев "Численные методы в задачах переноса нейтронов"). О Лебедеве у меня остались самые теплые воспоминания, он своим авторитетом защитил меня от нападок недоброжелателей и завистников, когда я баллотировался в СНС в курчатнике, и потом его ценные рекомендации я использовал в ряде программ по безопасности.

Всего записей: 232 | Зарегистр. 24-07-2005 | Отправлено: 18:39 09-04-2020
SergeSerge3leo



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
akaGM (KChernov)

Цитата:
Цитата:
В СССР примерно тем же, чем и Холецкий, занимался Булеев.
читается (и понимается) как "они оба занимались сходными задачами... каждый в своё время"  
это однозначно и не имеет никаких исторических ошибок  
 

Во-первых, в деле разложения Холецкого имеется много гитик, там всем работы хватило. Скажем, в русскоязычной литературе по какой-то, наверное, веской причине его долго называли "методом квадратного корня". А, так, просто забавное высказывание вышло.
 
Во-вторых, Холецкий - геодезист и решал свои геодезические задачи, а так же, по-моему, задачи проективной геометрии (фотограмметрии). Что до Булеева, то он славен совершенно иным. Очерк от Росатома:
http://elib.biblioatom.ru/text/fiziko-energeticheskiy-institut-letopis_2006/0010/

Всего записей: 101 | Зарегистр. 01-08-2011 | Отправлено: 19:39 09-04-2020
KChernov



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
akaGM
Спасибо за поддержку
А то уж были сомнения, что может я совсем непонятно написал
 
 
Eugeen

Цитата:
Если в несократимой дроби из примера выше: sum(1/k, k = 1 .. 31) = 290774257297357 / 72201776446800 из числителя  вычесть 1, то результат будет отличаться на -3.4390939875305444541428421975796e-13‬, что при обычной точности уже приемлемо, а если применять учетверенную точность, то  придумать реальные задачи с невозможностью считать с несократимыми дробями довольно сложно практически.  

Только вот точность надо оценивать для метода/алгоритма в целом, а не для одной операции. Есть у вас подобные оценки?
Кстати сами в вашем коде почему не стали подобное использовать?

Всего записей: 2471 | Зарегистр. 20-04-2004 | Отправлено: 21:32 09-04-2020
Eugeen



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

Цитата:
Только вот точность надо оценивать для метода/алгоритма в целом, а не для одной операции. Есть у вас подобные оценки?
Кстати сами в вашем коде почему не стали подобное использовать?

Я писал уже что с этой проблемой не сталкивался, может мои задачи были специфичные.
Насчет точности всего алгоритма Вы правы.  
Напр. для аттестации  кодов безопасности обязательно надо представлять верификационный отчет (на равне с валидационным) иначе, без аттестационного паспорта прогой пользоваться для обоснования безопасности нельзя.

Всего записей: 232 | Зарегистр. 24-07-2005 | Отправлено: 02:30 10-04-2020
SergeSerge3leo



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

Цитата:
придумать реальные задачи с невозможностью считать с несократимыми дробями довольно сложно практически.  

Честно говоря, лично мне, достаточно сложно придумать реальные задачи, которые можно было бы решить в рациональных числах типа:

Код:
type rational
    integer(8) nominator
    integer(8) denominator
end type

Для тех задач, которые, лично мне, кажутся реальными, при их решении в точных рациональных числах требуется многократная точность. Например, Фортран интерфейс к библиотеке GMP предлагает: type(mpq_t).

Цитата:
Если в несократимой дроби из примера выше: sum(1/k, k = 1 .. 31) = 290774257297357 / 72201776446800 из числителя  вычесть 1, то результат будет отличаться на -3.4390939875305444541428421975796e-13

Мне встречались статьи в которых рассматривалась реализация "приближенных рациональных чисел" ("приближенная рациональная арифметика"). Там не всё так просто с алгоритмами, например, в данном случае, вычитание 1 не позволяет после сокращения привести числитель и знаменатель из диапазона  0..249 в диапазон 0..231, требуется, либо рекурсивное продолжение банкета, либо вычитать надо было не 1.
 
Кроме того, смысл применения "приближенных рациональных чисел" неясен. В самом деле, при использовании рациональных чисел без спецфункций мы можем использовать любые методы без оглядки на численную устойчивость, например, тоже LU разложение. А при использовании "приближенных рациональных чисел" у нас каждая операция, в худшем случае может дать определённую относительную и/или абсолютную ошибку, соответственно мы должны выбирать численноустойчивые методы и оценивать ошибки этих методов. Заметим, с точки зрения худшего случая "приближенные рациональные числа" примерно эквиваленты обычным плавающим числам или числам с фиксированной точкой.  
 
А как использовать тот факт, что они немного "рациональные", хоть и "приближенные", при анализе погрешностей методов, лично мне, совершенно непонятно.  
 
В любом случае, наши задачи обработки наблюдений, даже для моделей с матрицами плана (если, конечно, их вычислить) "типа дроби 100000000\1 вне главной диагонали и 1\10000000 на ней" более менее нормально решались даже на одинарной точности (real*4), конечно, при небольшом количестве измерений (десятки и сотни) при использовании сингулярного разложения. Сейчас измерений больше (бывает, и десятки тысяч, и более), так что спокойнее использовать (real*8), а не балансировать "на грани фола".
 
P.S.

Цитата:
Напр. для аттестации  кодов безопасности обязательно надо представлять верификационный отчет (на равне с валидационным) иначе, без аттестационного паспорта прогой пользоваться для обоснования безопасности нельзя.

Антиресно, а что бы Вы (или Вам) в таковом отчёте написали бы про LUFACT()/LUSOLV() или про BACKW1()?

Всего записей: 101 | Зарегистр. 01-08-2011 | Отправлено: 07:59 10-04-2020 | Исправлено: SergeSerge3leo, 08:53 10-04-2020
Eugeen



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

Цитата:
Антиресно, а что бы Вы (или Вам) в таковом отчёте написали бы про LUFACT()/LUSOLV() или про BACKW1()?

Вот типовые требования, принятые сейчас уже и в МАГАТЭ.
Ссылка

Всего записей: 232 | Зарегистр. 24-07-2005 | Отправлено: 09:38 10-04-2020
Открыть новую тему     Написать ответ в эту тему

Страницы: 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 330

Компьютерный форум 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