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

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

Модерирует : gyra, Maz

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

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

xy



ХУдератор
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Wolfram Mathematica 14

Загрузка и поиск "лекарств"в "Варезнике"


 
Здесь обсуждаем вопросы языка Mathematica и программы, которая ИМХО лучше других выполняет свою задачу и, кроме, того очень точно соответствует своему названию, хотя там не забыли и про физиков и химиков и всех остальных:)

Всего записей: 10530 | Зарегистр. 28-05-2003 | Отправлено: 16:00 01-12-2003 | Исправлено: zAlAn711, 18:21 10-01-2024
vikkiv



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Moscow
 
И без Математики - альтернативных вариантов понятия "внешних источников" довольно много на самом-то деле на что и указал r_green ..
 
Можно разделить на пару основных групп:
1) На одном и том-же компьютере (на уровне файлов либо с выхода программ или примитивных интерфейсов/датчиков типа: термометр/манометр/тахометр/электро-импульсы и т.д.) - т.е. внешний только от самой математики, но в одной системе.
2) Вне персональной компьютерной системы - в основном сеть: интернет/локальная ..
 
Прище всего Математика работает с первым вариантом.
 
Для второго варианта для Математики - там разнится от взаимодействия через материнскую систему (Вольфрамoвские базы данных с которыми сама альфа работает и другие через функции GeodesyData[]/AstronomicalData[]/FinancialData[]/CountryData[]/CityData[]/WeatherData[]) и до того как сам запрограмируешь : сканирование+запросы с сайтов/страниц, использования внешних API (из популярных - Google очень развивается в этом плане), базы данных и пр.. самое простое по океанографии и метеорологии насколько я знаю они с сателитов и более земных датчиков просто на ftp сервера сбрасывают - а от туда исследователи уже массово считывают... например штатовкий центр ftp.opc.ncep.noaa.gov .. похожая система у NASA fтp 4 ( но у них там ограничения из-за системы информационной безопасности) и многих европейских центров... некоторые с логинами/закрытым доступом, некоторые с регистрацией, с запаздывающими данными, много открытых..
 
Для работы с SQL базами данных (неважно внутренняя тестово-девелоперская или с внешних серверов) там есть отдельная надстройка, можно работать через свои команды Математики, либо писать в родном SQL-вском формате (SQLExecute[]....)
В этом контексте Математика особо мощный инструмент анализа, т.к. сам SQL весьма ограничен и разработан в основном на организацию баз данных и взаимодействие с ними, а аналитическая часть работы с массивами слишком слаба...
 
 
А "копать" нужно туда куда есть необходимость .. т.е. определится с целями .. а потом с ресурсами в виде исходных данных .. отсюда ставим задачу - что хотим проверить/показать .. и какие данные доступны, .. Математика как инструмент будет соединительным звеном..

Всего записей: 747 | Зарегистр. 10-11-2005 | Отправлено: 04:38 19-03-2011 | Исправлено: vikkiv, 04:48 19-03-2011
lesnikforum

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Не предполагал, что можно так совершенстововать. Казалось бы, используйте в текущей версии предыдущие библиотеки функций, если они более производительны, и вообще зачем всё переписывать?
 
А кто-нибудь пробовал работать с CUDA? Например, построить 100 точек сложной функции.  
 
Может быть ещё подскажите, установил математику 8, а она на следующий день регистрироваться просит. Это можно как-то обойти?

Всего записей: 4 | Зарегистр. 18-03-2011 | Отправлено: 13:23 19-03-2011
r_green



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

Цитата:
Кстати, проверьте, пожалуйста, воспроизводится ли в 8-ке следующий глюк MemoryConstrained предыдущих версий

 
Похоже, исправлено. Вот что выдала у меня 8-ка:

Код:
 
Out[1]= 17 417 776
Out[3]= 17 952 712
 


Всего записей: 145 | Зарегистр. 17-09-2004 | Отправлено: 13:31 19-03-2011
popkov

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
r_green
Oliver Ruebenkoenig (Wolfram Research) в связи именно c этим багом написал:
Цитата:
For version 8 the memory allocator has been rewritten and improved.
 
(What a small sentence for such a huge endeavor and such a fine execution)
У меня нет возможности самому потестить, поэтому и попросил проверить с разными значениями второго параметра MemoryConstrained.  
 
lesnikforum
Цитата:
Казалось бы, используйте в текущей версии предыдущие библиотеки функций, если они более производительны, и вообще зачем всё переписывать?  
Типа появились "более совершенные" новые алгоритмы, так что от старых надо отказаться. Однако эти новые алгоритмы в некоторых ситуациях, когда старые выдавали ответ мгновенно, уходят в бесконечный цикл или же выдают неверный результат. Возможно также, что проблема не в самих алгоритмах, а в политике руководства Wolfram Research: в этой компании феодализация разработки разных аспектов системы (ядро, численные алгоритмы, графика и т.д.) так далеко зашла, что даже сами разработчики признают, что зачастую прогресс возможен только благодаря "старым связям", т.е. личному знакомству с разработчиками из других отделов компании, которые вообще-то не обязаны, но по старой дружбе раскрывают разработчикам-коллегам важные аспекты реализации встроенных функций, на которые те опираются в своей работе. Причем для такого выведывания нужны и знакомства, и такт, и время, и желание, что находится не у каждого. Поэтому бывает, что, реализовав какую-то новую функцию, уже на стадии окончательного релиза разработчик обнаруживает, что те функции, на которые он опирался в своей работе, уже "улучшены", и его код просто не работает!  
С другой стороны, как уже давно повелось, разработчики никакой ответственности за качество своей продукции не несут, и все усовершенствования, исправления багов - исключительно их добрая воля, "хорошие манеры", т.е. они вовсе не обязаны исправить глюк, даже если он уже обнаружен. И не исправляют годами! Выходят новые версии, а старые глюки, давно уже известные, - тут как тут! По сути, разработчики работают для себя, в свое удовольствие, и им дела нет до потребностей пользователей, если только эти потребности их лично не касаются! "Слава богу" банкротство им не грозит.  

Цитата:
А кто-нибудь пробовал работать с CUDA? Например, построить 100 точек сложной функции.  
CUDA - больше понт, чем реальная возможность добиться большей производительности. Программирование под CUDA в Mathematica требует весьма значительного дополнительного вложения сил, оно плохо документировано, работает только под самые последние версии видеокарт. Кроме того, у CUDA масса ограничений, которые по сути сводят на нет его преимущества в подавляющем большинстве случаев. Вместо CUDA лучше обратите внимание на усоврешенствованный Compile с возможностью компиляции в код на C: CompilationTarget -> "C".

Цитата:
Может быть ещё подскажите, установил математику 8, а она на следующий день регистрироваться просит. Это можно как-то обойти?
С такими вопросами - в Варезник, здесь им не место. Рекомендую почитать шапку и последние несколько страниц темы - вероятно, вопрос отпадет сам собой.

Всего записей: 1834 | Зарегистр. 22-03-2003 | Отправлено: 17:28 19-03-2011 | Исправлено: popkov, 09:58 20-03-2011
lesnikforum

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
popkov
Не думаю, что алгоритмом, например, FindRoot занимаются несколько групп. При обращении к этой функции скорее всего запускается подпрограмма, написанная скорее всего на С, которую вовсе не обязательно менять от версии к версии. Может быть медленнее работает за счёт общей упаковки всей программы, хотя сомнительно.    
 
Хотелось бы надеяться что с Кудой можной ускорить счёт. Постараюсь посмотреть, скажу.

Всего записей: 4 | Зарегистр. 18-03-2011 | Отправлено: 08:13 21-03-2011
r_green



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

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

Алгоритмы FindRoot не самодостаточны - они могут использовать (как подпрограммы) алгоритмы других групп. Например, применять символьный анализ выражения.

Всего записей: 145 | Зарегистр. 17-09-2004 | Отправлено: 09:58 21-03-2011
lesnikforum

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
r_green
 
Если счёт идёт около 10 минут (или даже минуту), то основное время приходится именно на основной алгоритм вычисления, а не вспомогательные алгоритмы, по-моему.
 
 
Может кто-нибудь подскажет. На какой ОС Математика быстрее/лучше работает, на ХР или 7? У компьютера 4 ядра, Вин7 в принципе может это использовать в смысле параллельной работы?

Всего записей: 4 | Зарегистр. 18-03-2011 | Отправлено: 07:46 23-03-2011
karl_karlsson



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
lesnikforum
Comparison of mathematical programs for data analysis
Видно, что Matlab и O-matrix где то быстрее для численных расчетах для несложных задачах. На более сложных разница иногда может достигнуть порядка.
Также, Mathematica 5 или даже 4 тоже быстрее.
Если написать программу на C, Fortran и т.д. (компилируемых языках) - будет еще на порядки быстрее Matlab. Но, конечно, размер кода будет на порядки больше и для написании (даже если готовые подпрограммы используются) будет занимать на порядки больше времени.
 
Добавлено:
От ОС большой зависимости не наблюдается, еще параллельной работы не для всех задач подходить.

Всего записей: 2027 | Зарегистр. 14-03-2007 | Отправлено: 14:21 23-03-2011
vikkiv



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
lesnikforum
Кроме парралельности ещё наверное немаловажный момент - битность, 32 vs 64 , для ХР как известно 64 битных версий нет.
 
Edit:
karl_karlsson
Второй момент ..может стоит обратить внимание на стратегические перспективы .. с учётом агрессивной маркетинговой экспансии Математики в университеты как академические/студенческие лицензии думаю всё-таки они к нынешней своей доли рынка под себя ещё и существенное расширение сегмента на будующее готовят. Выпускнику для миграции между системами переучивать FrontEnd интерфейсы/комманды - всё-таки лишние временные и интеллектуальные затраты.. т.е. потеря эффективности. а когда этот-же студент становится тем кто принимает решения на какой системе базировать работу всей организации, и кого из сотрудников нанимать (знающих какие системы) .. тут путь развития несложно вывести .. т.е. какому из альтернативных продуктов будут отданы предпочтения  .. Это относится как к внутренней так и к внешней системе организации, т.е. и к рынку труда.
K этому ещё такие продукты поддержки как Player/Alpha, Web-интеграция, серверные технологии .. документация и кол-во людей кто уже в теме по нюансам работы и реализации и может направить на нужный путь, подсказать как решить ту или иную задачу .. естественно речь в основном о массовых/ежедневных задачах а не о особенностях к-рые здесь иногда обсуждают но на практике редко кто встречается.

Всего записей: 747 | Зарегистр. 10-11-2005 | Отправлено: 17:17 23-03-2011 | Исправлено: vikkiv, 17:40 23-03-2011
popkov

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
lesnikforum
Цитата:
Если счёт идёт около 10 минут (или даже минуту), то основное время приходится именно на основной алгоритм вычисления, а не вспомогательные алгоритмы, по-моему.
Дело в том, что основной алгоритм сам написан на языке Mathematica, и является по сути надстройкой над базовыми функциями, доступными в т.ч. и пользователю. При этом разработчики стремятся обеспечить максимум универсальности встроенных функций, из-за чего сильно страдает производительность (о которой в WR вообще не слишком заботятся в целом). Поэтому самостоятельно реализованный алгоритм под свою конкретную задачу может работать в десятки раз быстрее, чем встроенный. Причем разработчики рекомендуют именно так и поступать в случаях, когда встроенные функции оказываются слишком медленными.
 
Кроме того, все т.н. "числовые" функции в действительности по умолчанию используют символьный анализ, например NDSolve первым делом вызывает Solve. Ситуация была другой в версиях, предшествовавших Mathematica 6.

Всего записей: 1834 | Зарегистр. 22-03-2003 | Отправлено: 04:11 24-03-2011
Moscow

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ребят, уже на втором компе, на одном стоит ХР, на другом 7 Стартер, после запуска Математика 8.0.1 пишет внизу экрана объявку
 
JLink`InstallJava::fail: A link to the Java runtime could not be established.
 
Это что значит? На что влияет?...

Всего записей: 215 | Зарегистр. 02-12-2004 | Отправлено: 22:10 25-03-2011
popkov

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Moscow
В первую очередь на справку: она полностью зависит от Жабы. А вычисления выполняются (пример: выполнить 2+2), т.е. MathKernel подключается к FrontEnd?
 
Добавлено:
Возможно, проблему создает слишком агрессивно настроенный firewall (или антивирус). Попробуй отключить его.

Всего записей: 1834 | Зарегистр. 22-03-2003 | Отправлено: 22:38 25-03-2011
popkov

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
TomasVercetti
Цитата:
В 5-7 версиях вложенные функции типа FindRoot[NIntegrate[]] могли выдавать ошибки (а могли и нет) типа NIntegrate::inumr, которые связаны с тем, что внутренняя функция рассчитвается (Evaluate) в первый раз перед расчётом внешней. Т.е., с символьными аргументами, так как численные значения внешней функции ещё не подставлены (нормальный порядок расчёта) При этом всё рассчитывалось нормально. В 8й версии при наличии таких ошибок FindRoot работает некорректно в принципе (ещё одно сообщение).
 
Полное «решение» проблемы — позволить внутренней (и, для вызова из других функций, внешней) функции быть рассчитываемой только с численными значениями. Например, InternalF[x_?NumericQ, y_?NumericQ]:=NIntegrate[x y z, {z,0,1}], WrappingF[x_?NumericQ]:=FindRoot[InternalF[x,y],{y,0,1}].

Только что прочитал объяснение сути проблемы:
 
1) FindRoot имеет атрибут HoldAll, поэтому неверно думать, что выполнение первого аргумента до присвоения числового значения локальной переменной (в данном случае y) является просто отражением стандартной последовательности выполнения выражения (The Standard Evaluation Sequence; см. в документации страницу tutorial/Evaluation).  
 
2) В Mathematica 6 у некоторых числовых функций появилась недокументированная опция Evaluated. Она не заменяет отсутствующие Hold*-атрибуты функции, т.е. не предотвращает предварительное выполнение аргументов функции перед выполнением самой функции, но предотвращает выполнение аргумента самой функцией до того момента, когда локальной переменной будет присвоено конкретное значение. В Mathematica 5.x вместо этой опции вроде бы была другая, но заставить работать ее мне не удалось.
 
Пример использования:
 
In[1]:= FindRoot[NIntegrate[Exp[a x], {x, 0, 1}] == 2, {a, 1}, Evaluated -> False]
 
Out[1]= {a -> 1.25643}
 
(никаких сообщений об ошибке!)
 
Эта опция есть и у ряда других числовых функций:
 
In[2]:= Options[#, Evaluated] & /@ {ContourPlot, ContourPlot3D,  
  DensityPlot, FindRoot, ParametricPlot, ParametricPlot3D, Plot,  
  Plot3D, RegionPlot, RegionPlot3D}
 
Out[2]= {{Evaluated -> Automatic}, {Evaluated ->  
   Automatic}, {Evaluated -> Automatic}, {Evaluated ->  
   True}, {Evaluated -> Automatic}, {Evaluated ->  
   Automatic}, {Evaluated -> Automatic}, {Evaluated ->  
   Automatic}, {Evaluated -> Automatic}, {Evaluated -> Automatic}}
 
Использование этой недокументированной опции позволяет добиться заметного прироста скорости выполнения по сравнению с документированными методами:
 
In[1]:= ClearSystemCache[];
FindRoot[NIntegrate[Exp[a x], {x, 0, 1}] == 2, {a, 100},  
  Evaluated -> False] // Timing
Clear[internalF]; ClearSystemCache[];
internalF[a_?NumberQ] := NIntegrate[Exp[a x], {x, 0, 1}]
FindRoot[internalF[a] == 2, {a, 100}] // Timing
Clear[internalF]; ClearSystemCache[];
internalF[a : (_Real | _Integer)] := NIntegrate[Exp[a x], {x, 0, 1}]
FindRoot[internalF[a] == 2, {a, 100}] // Timing
Clear[internalF]; ClearSystemCache[];
internalF[a_?NumericQ] := NIntegrate[Exp[a x], {x, 0, 1}]
FindRoot[internalF[a] == 2, {a, 100}] // Timing
Clear[internalF]; ClearSystemCache[];
internalF[a_ /; NumericQ[a]] := NIntegrate[Exp[a x], {x, 0, 1}]
FindRoot[internalF[a] == 2, {a, 100}] // Timing
 
Out[2]= {1.342, {a -> 1.25643}}
 
Out[5]= {1.993, {a -> 1.25643}}
 
Out[8]= {1.983, {a -> 1.25643}}
 
Out[11]= {1.973, {a -> 1.25643}}
 
Out[14]= {2.023, {a -> 1.25643}}

Всего записей: 1834 | Зарегистр. 22-03-2003 | Отправлено: 07:42 26-03-2011 | Исправлено: popkov, 10:52 26-03-2011
amaggot

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

Всего записей: 1 | Зарегистр. 26-04-2007 | Отправлено: 00:58 06-04-2011 | Исправлено: amaggot, 20:49 06-06-2015
popkov

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
amaggot
Может быть, ты используешь в качестве первого аргумента ParallelCombine определенную тобой функцию, для которой ты предварительно не выполнил DistributeDefinitions? Это стандартная ошибка: параллельные ядра просто ничего не знают о функции, которую ты определил только в Master Kernel.

Всего записей: 1834 | Зарегистр. 22-03-2003 | Отправлено: 05:46 08-04-2011
vikkiv



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как перманентно (т.е. не на сессию а чтобы автоматом брала при каждом запуске)
перенастроить математику (февральская 8.0.1 или можно на предыдущих примерах)
на использование системной Java (_:\Program Files\Java\jdk1.6.0_24 | _:\Program Files\Java\jre6)
вместо той которая идёт с Математикой (_:\Program Files\Wolfram Research\Mathematica\8.0\SystemFiles\Java\Windows )
???
 
А то Java постоянно обновляется а Математика изпользует устаревшую версию (в 8.0.1 идёт "1.6.0_10") .. что немного неудобно и иногда рискованно если пробуешь сборку Математических пакетов использующих Java.

Всего записей: 747 | Зарегистр. 10-11-2005 | Отправлено: 18:13 09-04-2011 | Исправлено: vikkiv, 18:27 09-04-2011
r_green



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

Цитата:
Как перманентно (т.е. не на сессию а чтобы автоматом брала при каждом запуске)
перенастроить математику (февральская 8.0.1 или можно на предыдущих примерах)
на использование системной Java

Создайте символическую ссылку  

Код:
Program Files\Wolfram Research\Mathematica\8.0\SystemFiles\Java\Windows -> Program Files\Java\jre6

Всего записей: 145 | Зарегистр. 17-09-2004 | Отправлено: 23:29 09-04-2011
LimonD

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Доброго всем времени суток, возник следующий вопрос, найти ответ на который пока не самостоятельно не смог.  
 
Допустим, имею простейший график:
 
In[1]:= spisok = {1, 2, 3, 4,}
ListPlot[spisok, Joined -> True]
 
Out[1]= {1, 2, 3, 4, Null}
 
Вопрос: Как мне дифференцировать данный график и отобразить результат операции? Понятно, что в моём случае это прямая, попрошу рассматривать как более сложный пример, допустим полином третьего порядка.

Всего записей: 1 | Зарегистр. 11-04-2011 | Отправлено: 23:16 11-04-2011
r_green



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

Цитата:
Как мне дифференцировать данный график и отобразить результат операции?

Такой график  всегда представляет собой ломанную (т.е. кусочно дифференцируемую ф-цию). Производная такой ф-ции (в табличном представлении):
 
spisok2 = Differences[spisok]
Отобразить можно так же, как и spisok.
 
Но Вы, кажется, имели в виду получение производной в аналитическом виде. Для этого Вам нужно сначала интерполировать ваш список подходящей аналитической ф-цией (например, для полинома для этого есть встроенная ф-ция InterpolatingPolynomial[]), а потом дифференцировать эту ф-цию как обычно.
 
 

Всего записей: 145 | Зарегистр. 17-09-2004 | Отправлено: 00:09 12-04-2011
Andrew10

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LimonD
r_green
 
Если собираетесь дифференцировать результат, то лучше не интерполировать, а аппроксимировать, например, функцией Fit.

Всего записей: 780 | Зарегистр. 26-02-2005 | Отправлено: 12:58 12-04-2011
Открыть новую тему     Написать ответ в эту тему

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

Компьютерный форум Ru.Board » Компьютеры » Программы » Wolfram Mathematica | Математика


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru