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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
и отключать графические смайлики при размещении фортран-кода

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

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Уважаемые линуксоиды,
никто не юзал IBM-овский XL Fortran for Linux?
 
http://www-01.ibm.com/software/awdtools/fortran/xlfortran/linux/

Всего записей: 24102 | Зарегистр. 06-12-2002 | Отправлено: 22:46 26-09-2008
MikhalVasylevich

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Уважаемые форумчане, подскажите пожалуйста направление поиска.
Нужно сделать нелинейную апроксимацию данных. Те, есть набор точек (енергий)  
 Е(r1,r2,r3). Необходимо их фитировать нелинейным базисным набором,
типа Efit(r1,r2,r3) = C0*r1*exp(-C1*r1)+C2*r2*exp(-C3*r2) + C4*r3*exp(-C5*r3) +  
     С6*r1**2*exp(-2*C7*r1) + ...
 
Необходимо найти параметры С0,С1....Сn (n ~ 100) для обеспечения минимального среднеквадратического оклонения Efit - E.  
Короче стандартная задача оптимизации и апроксимаций.  
Я ищу открытый код (желательно даже на Ф-77). Смотрел в разных базах, но то отправляют на демо версии, то связаться с авторами, короче фигня всякая, ничего подходящего найти не могу.  
А по запросу nonlinear fit выдает просто огромное количество ссылок все не перелопатить никак.
Может кто подскажет ,плз, где можно найти исходник рабочей сабрутины для вышеупомянутой задачи.    
             

Всего записей: 21 | Зарегистр. 06-09-2006 | Отправлено: 01:50 01-10-2008
Andrew10

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MikhalVasylevich
 
Если нужен открытый код, зайди на www.netlib.org и в строке поиска задай nonlinear optimization или что-нибудь похожее.

Всего записей: 780 | Зарегистр. 26-02-2005 | Отправлено: 08:37 01-10-2008
Vskazka

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MikhalVasylevich
Это - не стандартная задача оптимизации. Если Вы будете искать коэффициенты - то будет очень плохо обусловленная матрица вторых производных в точке минимума. Посмотрите сами, коли не лень. И это при том, что вы будете восстанавливать коэффициенты, когда возможно сие сделать точно. Вы же хотите еще и сгладить (ошибки эксперимента?). Думаю, что на этом пути ничего не получится. Для этого надо знать хотя бы диф. уравнения, описывающие процесс. Тогда все может получиться, но морока сие. И готовых программ на такие случаи Вы не найдети, полагаю.

Всего записей: 382 | Зарегистр. 24-11-2003 | Отправлено: 09:04 01-10-2008
XPEHOMETP

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MikhalVasylevich  
Похоже, что Ваша суммочка - это разложение в ряд некой функции, причем разложение, подчиняющееся некой теории. Соответственно, из этой теории должны быть известны соотношения между коэффициентами при одинаковых переменных с различными степенями - типа С0 и С6, С1 и С7. Без этих соотношений (и сокращения на их основе числа параметров) задача действительно слишком крутая, Vskazka прав.

Всего записей: 2485 | Зарегистр. 21-06-2005 | Отправлено: 15:10 01-10-2008
Igorr

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MikhalVasylevich
Возможно вам может помочь какая-либо из подпрограмм IMSL. Например, вот эта:
Цитата:
 FNLSQ/DFNLSQ (Single/Double precision):
  Compute a least-squares approximation with user-supplied basis functions.
Usage:
  CALL FNLSQ (F, INTCEP, NBASIS, NDATA, XDATA, FDATA, IWT, WEIGHT, A, SSE)
Arguments:
  F — User-supplied FUNCTION to evaluate basis functions. The form is F(K, X),
where:
  K – Number of the basis function. (Input)
     K may be equal to 1, 2, ..., NBASIS.
  X – Argument for evaluation of the K-th basis function. (Input)
  F – The function value. (Output)
     F must be declared EXTERNAL in the calling program. The data FDATA is
     approximated by A(1) * F(1, X) + A(2) * F(2, X) +...+ A(NBASIS) *
     F(NBASIS, X) if INTCEP = 0 and is approximated by A(1) + A(2) * F(1,
     X) +...+ A(NBASIS + 1) * F(NBASIS, X) if INTCEP = 1.
...


Всего записей: 2003 | Зарегистр. 01-05-2002 | Отправлено: 20:46 01-10-2008
XPEHOMETP

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MikhalVasylevich
Еще пять копеек. Подпрограммa оптимизации eсть на сайте Алана Миллера: global.f90. Описание дается такое:

Цитата:
At Arnold Neumaier's web site, this is recommended as the most successful of the global optimization packages

Там же (после такого описания) - ссылочка на текстовый файл с несколько устаревшей документацией (для версии под f77). Ну и ссылка на скачивание самой подпрограммы (без "демо-версий" и прочего).
 
Если на сайте Миллера еще порыться, там есть еще несколько любопытных программ. К примеру, такие:

Цитата:
lm.zip Levenberg-Marquardt algorithm for non-linear least squares (unconstrained). This is a translation of the MINPACK routines, LMDER & LMDIF. Use LMDER for functions which can be differentiated, and LMDIF when it is necessary to use differences. The ZIPped file includes the MINPACK test programs, and a simple example fitting a 4-parameter logistic.  
 
conmin.zip The classic CONMIN package for constrained minimization updated to Fortran 90. Test examples and the manual are included in the ZIP file. N.B. CONMIN is included as just one of the algorithms in TOMS algorithm 734 which can be downloaded from netlib (http://www.netlib.org).  
 
minim.f90 The Nelder-Mead simplex algorithm for unconstrained minimization. It does NOT require or use derivatives. N.B. This is NOT for linear programming!

 
Да и вообще, если погуглить, можно много чего найти. Есть вот PIKAIA:

Цитата:
PIKAIA (pronounced ``pee-kah-yah'') is a general purpose function optimization FORTRAN-77 subroutine based on a genetic algorithm. PIKAIA is a public domain software available electronically from the anonymous ftp archive of the High Altitude Observatory. The subroutine is particularly useful (and robust) in treating multimodal optimization problems.

Сама подпрограмма идет с подробным описанием. Правда, у меня есть сомнения по поводу применения генетического алгоритма в Вашем случае (с числом параметров порядка сотни) - ох, не дождетесь окончания счета!

Всего записей: 2485 | Зарегистр. 21-06-2005 | Отправлено: 08:29 02-10-2008 | Исправлено: XPEHOMETP, 08:30 02-10-2008
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MikhalVasylevich
всё, что тебе советуют, лежит по ссылкам из шапки этого топа, даже гуглить не надо...

Всего записей: 24102 | Зарегистр. 06-12-2002 | Отправлено: 15:24 02-10-2008
XPEHOMETP

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
akaGM
Вот PIKAIA вроде нету в шапке, а подпрограмма идет с такими подробными объяснениями, словно и не математики писали! Я серьезно. Граждане математики считают, что каждый, скачивающий их программу, должен сечь код на лету, поэтому они обычно дают минимум пояснений к своей проге. А тут целый туториал прикладывают! Вах!

Всего записей: 2485 | Зарегистр. 21-06-2005 | Отправлено: 16:14 02-10-2008
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
XPEHOMETP
правильно, отдельной прямой ссылки нет...
а, например, через ОпенДиректори (из шапки) -- пожалуйста...

Всего записей: 24102 | Зарегистр. 06-12-2002 | Отправлено: 16:38 02-10-2008
MikhalVasylevich

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Уважаемые форумчане, огромное спасибо за ответы !
Извините сразу не отписал, не было возможности. Счас буду смотреть на Ваши ссылки.  
Кстати между делом пользовал Математику для фитирования, так вот версия 6.0 в отличии от 4.2 дает весьма ощутимый прирост (в разы!) в скорости расчета коэфф. модельной функции. Наверно хорошо с алгоритмом поработали.
Но хочется, ( вернее требуется ) пользовать все-таки Fortran.    
 
2 XPEHOMETP. Все правильно насчет сложности задачи. Это разложение есть не что иное как подгонка заданой модельной функции под условно точные значения енергии системы. Вообще-то система описывется ур. Шредингера котроое известно, но вот навряд ли возможно получить соотношения между коэффициентами. Сложность в том, что требуемая точность воспроизведения даных порядка 10^{-4} %, из-за этого большое количество параметров.    
Кстати сегодя проф. местный заикнулся насчет использования genetic algorithm, так что Ваша ссылка не в бровь а в глаз . Тут еще пытаются нейронные сеты использовать (пока слабо понимаю с чем их едят) но судя по всему что-то типа genetic algorithm. Короче буем разбираться.  
 
2 Igorr  спасибо за ссылку на  IMSL библиотеку.
Еще раз большое спасибо всем (Vskazka, akaGM, Andrew10) за помощь.
 
 

Всего записей: 21 | Зарегистр. 06-09-2006 | Отправлено: 01:14 03-10-2008 | Исправлено: MikhalVasylevich, 02:08 03-10-2008
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MikhalVasylevich
да чё там, не за что...
на вот ещё из закромов, почти всё в сорсах:
http://www-fp.mcs.anl.gov/otc/Guide/SoftwareGuide/index.html

Всего записей: 24102 | Зарегистр. 06-12-2002 | Отправлено: 13:15 03-10-2008
vaulin

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
У меня есть несколько вопросов по Fortran 90 (CVF 6.5)
1. В книгах Бартеньва пишется, что, для увеличения скорости расчетов старайтесь заменять циклы конструкциями типа forall или where. Написал спец. прог. и проверил - скорость расчетов уменьшается! получается, лучше использовать обычные циклы?! В чем дело? Может, я не правильно их использую?
2. От некоторых слышал, что библиотека IMSL быстрее работает, чем CXML. Решил проверить, использовал функции БПФ соответственно cfft_ и f2tcf/f2tcb (для решения параболического уравнения методом Фурье). Ничуть! при малых объемах вычислений работают примерно одинаково, а при больших CXML в 2-3 раза быстрее?! может я что-то не настроил?

Всего записей: 80 | Зарегистр. 16-10-2008 | Отправлено: 11:36 16-10-2008
terminat0r



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

Цитата:
В книгах Бартеньва пишется, что, для увеличения скорости расчетов старайтесь заменять циклы конструкциями типа forall или where. Написал спец. прог. и проверил - скорость расчетов уменьшается! получается, лучше использовать обычные циклы?! В чем дело? Может, я не правильно их использую?

все правильно. Эти циклы действительно медленеее обычных.

Всего записей: 2084 | Зарегистр. 31-03-2002 | Отправлено: 14:36 16-10-2008
vaulin

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

Цитата:
все правильно. Эти циклы действительно медленеее обычных

получается, в Бартеньева ошибка? Зачем тогда они вообще нужны, эти конструкции, только ли для компактности кода?

Всего записей: 80 | Зарегистр. 16-10-2008 | Отправлено: 06:37 17-10-2008
DeadVillage



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

Цитата:
Зачем тогда они вообще нужны, эти конструкции, только ли для компактности кода?

 
Допустим, какой код для перемножения матриц лучше со вложенными циклами или просто написать C = A*B ?
Бесспорно, второй вариант более компактный и понятный (даже мне) с первого взгляда. Но я не думаю, что ради одной компактности это затевалось. Ведь мы определённо не знаем как именно программа перемножает матрицы в "компактном" случае. Это скорее всего будет зависеть от системы - одно-процессорная или много-процессорная.

Всего записей: 652 | Зарегистр. 05-12-2003 | Отправлено: 07:12 17-10-2008
terminat0r



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

Цитата:
Но я не думаю, что ради одной компактности это затевалось.

В то время когда развивался стандарт, именно ради нее. Со временем  будет (или уже есть?) наверное

Цитата:
... зависеть от системы - одно-процессорная или много-процессорная.


Всего записей: 2084 | Зарегистр. 31-03-2002 | Отправлено: 18:20 17-10-2008
vaulin

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Кстати, еще об одной несуразице в литературе. В книгах по Fortran такжи пишут, что для увеличения скорости расчетов необходимо использовать библиотечные функции. Пробовал решать параболическое уравнение при использовании библиотечных функций решения трехдиагональных систем уравнений (функция LSLQT библиотеки IMSL) и непосредственно методом прогонки. Метод прогонки оказался быстрее. Хотя, конечно, может библиотечная функция устойчивее, не знаю. Но факт остается фактом. Кстати, у меня подозрения, что и метод БПФ, написанный вручную, будет работать быстрее
 
Добавлено:
DeadVillage

Цитата:
Но я не думаю, что ради одной компактности это затевалось

 
По этому вопросу в свое время перерыл весь help, ни нигде не нашел даже намека на то, что использование операторов FORALL и WHERE позволяют повысить скорость вычислений, хотя в литературе в этом неоднокротно уверяют. Как говорится, доверяй, но проверяй

Всего записей: 80 | Зарегистр. 16-10-2008 | Отправлено: 06:07 20-10-2008
Andrew10

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

Цитата:
Пробовал решать параболическое уравнение при использовании библиотечных функций решения трехдиагональных систем уравнений (функция LSLQT библиотеки IMSL) и непосредственно методом прогонки. Метод прогонки оказался быстрее.

 
Может быть LSLTQ? Что-то я LSLQT в документации не нашел.
 
Тогда не удивительно, т.к. в этой функции используется метод Гаусса с выбором ведущего элемента для сохранения устойчивости, что удорожает алгоритм по сравнению с прогонкой

Всего записей: 780 | Зарегистр. 26-02-2005 | Отправлено: 12:14 20-10-2008
vaulin

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

Цитата:
Может быть LSLTQ? Что-то я LSLQT в документации не нашел.  
Тогда не удивительно, т.к. в этой функции используется метод Гаусса с выбором ведущего элемента для сохранения устойчивости, что удорожает алгоритм по сравнению с прогонкой

 
Да, да, перепутал, именно LSLTQ, извините! Да, я тоже приметил в тех. описании, что там используется метод Гаусса, но как-то не придал этому особого значения, а вчера посмотрел в литературе (Пирумов У.Г. Численные методы, 1979), действительно, по этим данным (опять же, я их не проверял) кол-во оперций, необх. для метода Гаусса с ведущим элементом, примерно (2n**3/3 + n**2), а для прогонки - 8n! т.е. при n=1000 (кол-во неизвестных в системе ур-ий) выигрыш будет примерно в 80 000 раз. А в моих расчетах библиотечная функция LSLTQ всего в 2 раза медленнее считала, чем метод прогонки. Похоже на то, что Бартеньев всё-таки прав насчет использования библиотечных функций. Спасибо большое за подсказку!
Найти бы еще библиотечную функцию метода прогонки, никто не знает, есть ли такая?

Всего записей: 80 | Зарегистр. 16-10-2008 | Отправлено: 06:11 21-10-2008
Открыть новую тему     Написать ответ в эту тему

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