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

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



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
В общем так и не понял, как же форматировать текст, чтобы он не выполнялся - все равно выполняется (даже если флаг выполнения снять)

Всего записей: 2471 | Зарегистр. 20-04-2004 | Отправлено: 11:30 23-06-2008
popkov

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

Цитата:
Есть! Комментарии заключаются в "(*" и "*)" (без кавычек)! И могут присутствовать где угодно. Интерпретатор игнорирует всё, что заключено в эти тэги.

Спасибо, попробую так  

Цитата:
В общем так и не понял, как же форматировать текст, чтобы он не выполнялся - все равно выполняется (даже если флаг выполнения снять)  
Хм... так и забыл попробовать, что ли? Я вот и то помню, что отвечал тебе...


2ALL
Кстати, недавно в группах новостей полезная темка появилась: оказывается, результат печати графиков из Mathematica 6 на принтер Acrobat Distiller отличается, если выделить только сам график или ячейку с графиком. Причём только в последнем случае полученный PDF-файл сравнительно корректно импортируется в Adobe Illustrator (автор исследовал проблему под Mac OS). Эта тема возникла как продолжение предыдущей, где была сформулирована сама проблема: генерируемые Mathematica 6 PDF-файлы никуда не импортируются корректным образом, так что их редактирование становится невозможным.  
 
Вообще, много ещё можно сказать заслуженно всяких гадостей в адрес Wolfram Research за частично испорченный экспорт в 6-й Mathematica (особенно обидна частичная утрата возможности всюду и везде запросто скопировать 2-х и даже 3-х-мерный график и вставить в Word в векторном формате). Я провёл собственное исследование на эту тему, но результаты малоутешительны: 3-хмерные графики в 6-ке вообще невозможно нормально экспортировать в векторном виде (и разработчики утверждают, что это - следствие ограничений форматов PostScript и EMF - хотя графики всё же экспортируются в PDF, и даже неплохо выглядят, но содержат много режущих глаза артефактов! - где тут ограничения PostScript, неясно). А двумерные обычно можно экспортировать, но присутствие в них Tooltip[]'ов может сделать экспорт невозможным (лечится удалением последних).
 
В общем, пока разберёшься, как просто вставить созданный график в Word, полжизни потратишь. Однако некоторые постояльцы официальной группы новостей по Mathematica, кажется, даже рады такой ситуации, и утверждают, что жизнь слишком длинна, чтобы можно было потратить её на борьбу с багами... Видимо, каждому своё...


 
UPDATE: поигравшись с созданным Mathematica PDF-файлом в Foxit PDF Editor 1.4, я обнаружил, что как минимум некоторые артефакты (белые полосочки по всему рисунку) можно полностью или практически полностью удалить, просто немного изменив параметры графических примитивов в рисунке: надо Line Width выставить в 0 (по умолчанию 1) и Stroke установить в Yes. Тогда полоски практически полностью исчезают.

Всего записей: 1834 | Зарегистр. 22-03-2003 | Отправлено: 16:45 27-06-2008 | Исправлено: popkov, 18:28 25-07-2008
popkov

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Любопытное свойство функции интегрирования в Mathematica.
 
Нижеследующий интеграл, вроде бы, Mathematica взять не может:
In[1]:= Integrate[Sqrt[5 - 4*Cos[t] + Cos[2*t]], {t, 0, Pi}]
Out[1]= Integrate[Sqrt[5 - 4*Cos[t] + Cos[2*t]], {t, 0, Pi}]
 
Однако, вставка Simplify приводит к тому, что ответ "магически" проявляется (но только если перед этим вы уже пытались взять интеграл без Simplify):
In[2]:= Integrate[Simplify[Sqrt[5-4*Cos[t]+Cos[2*t]]],{t,0,Pi}]
Out[2]= 1/5 Sqrt[2+4 I] (-5 I EllipticE[-(3/5)-(4 I)/5]+(2+I) Sqrt[5] EllipticE[-(3/5)+(4 I)/5]-(12-4 I) EllipticK[-(3/5)-(4 I)/5]+(6-2 I) Sqrt[5] EllipticK[8/5-(4 I)/5]+4 I Sqrt[5] EllipticPi[1/5+(2 I)/5,-(3/5)+(4 I)/5]+(8+4 I) EllipticPi[1-2 I,-(3/5)-(4 I)/5])
 
несмотря на то, что Simplify просто возвращает то же самое подинтегральное выражение:
In[3]:= Simplify[Sqrt[5-4*Cos[t]+Cos[2*t]]]
Out[3]= Sqrt[5-4 Cos[t]+Cos[2 t]]
 
Есть ещё ряд способов взять этот интеграл в Mathematica.
 
Вышеописанное поведение уже начинает напоминать "Random Bug Generator" от Maplesoft...

Всего записей: 1834 | Зарегистр. 22-03-2003 | Отправлено: 17:08 24-07-2008 | Исправлено: popkov, 18:09 25-07-2008
vengr



Рафинированный Теоретик
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
popkov

Цитата:
поигравшись с созданным Mathematica PDF-файлом в Foxit

помоему лучше использовать Mathematica + Publicon, всё же совместимость должна быть лучше, хотя с 6.03 сам не проверял

Всего записей: 3579 | Зарегистр. 21-08-2001 | Отправлено: 18:39 31-07-2008
28111981

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

Цитата:
Вышеописанное поведение уже начинает напоминать "Random Bug Generator" от Maplesoft...  

Симплифай в любом случае (есть упрощение или нет) проводит преобразование внутреннего представления для скормленного ей выражения. Потому и неудивительно, что символьный интегрейт дает разные результаты до и после применения симплифая. Хотя, конечно, спорный ход - ради быстродействия пожертвовали обязательной оптимизацией подынтегрального выр-я в интегрейт.

Всего записей: 27 | Зарегистр. 18-01-2007 | Отправлено: 15:13 21-09-2008 | Исправлено: 28111981, 15:14 21-09-2008
popkov

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

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

Преобразование даёт то же самое выражение:

Цитата:
несмотря на то, что Simplify просто возвращает то же самое подинтегральное выражение:
In[3]:= Simplify[Sqrt[5-4*Cos[t]+Cos[2*t]]]
Out[3]= Sqrt[5-4 Cos[t]+Cos[2 t]]  

Очевидно, ни о какой оптимизации здесь речи быть не может. Кроме того, всё это срабатывает, только если перед этим вы уже пытались взять интеграл без Simplify! Именно последнее обстоятельство и наводит на грустные мысли... Это уже похоже на шаманство какое-то!

Всего записей: 1834 | Зарегистр. 22-03-2003 | Отправлено: 15:47 27-09-2008 | Исправлено: popkov, 15:50 27-09-2008
28111981

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Повторю еще раз
 
a=1+x и a=Simplify[1+x] дает видимый результат 1+х, но внутреннее представление этого самого 1+х у математики будет разное.

Всего записей: 27 | Зарегистр. 18-01-2007 | Отправлено: 21:18 05-10-2008 | Исправлено: 28111981, 21:39 05-10-2008
popkov

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
28111981
Ну а как вы объясните самый главный-то глюк:

Цитата:
всё это срабатывает, только если перед этим вы уже пытались взять интеграл без Simplify!  

Всего записей: 1834 | Зарегистр. 22-03-2003 | Отправлено: 18:12 06-10-2008
28111981

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

Цитата:
Ну а как вы объясните самый главный-то глюк: ...

Ну, это достаточно просто объяснить
Математика кеширует результаты предыдущих вычислений, чтоб ускорить доступ при повторных обращениях. Если кеш сливать, то вы даже с симплифаем результата не получите. Вот пример:
Integrate[Sqrt[5 - 4*Cos[t] + Cos[2*t]], {t, 0, Pi}]
ClearSystemCache["Symbolic"]
Integrate[Simplify[Sqrt[5 - 4*Cos[t] + Cos[2*t]]], {t, 0, Pi}]
Если выполнить последовательно строки 1 и 3, то после третьей результат есть. А если выполнять 1-2-3, то результата нет.
Строка 2 очищает кеш символьных результатов (см. хелп).  
Что там "внутре" после первой команды получается - непонятно, т.к. видимый результат - повтор введенного выражения. Но, очевидно, что трансформация какая-то есть, она кешируется и потом используется при попытке симплификации..
Мало того, поставьте вместо симплифая евалюэйт, и получите результат...
Думаю, что в самом интегрейте упростили или недоделали процедуру оптимизации выражения, потому он и тупит... А может это фича такая - для многих функций указывается, что вычисление идет непрямым путем, так что ставьте евалюэйт ,чтоб "процесс пошел" как надо.. а тут не указали

Всего записей: 27 | Зарегистр. 18-01-2007 | Отправлено: 18:41 06-10-2008
Griefin

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

Всего записей: 759 | Зарегистр. 19-07-2003 | Отправлено: 21:43 10-10-2008
28111981

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Griefin
не понял вопроса. уточните.
 
popkov
Разобрался с Бенчмарком. Содержимое собственно бенчмарка (исполняемые операции) можно посмотреть сделав такую штуку:
Needs["Benchmarking`"]
BenchmarkReport[]
В итоге сгенерится страничка с отчетом, в которой можно посмотреть все используемые в бенчмарке примеры. Кстати, в "математике 5" и в 6й содержание бенчмарка одно и то же вплоть до коэффициентов. Т.е. можно напрямую сравнивать производительность разных поколений движков математики.
 
Пробовал параллелить задачи на многоядернике с помощью PCT 2.0 - мечта

Всего записей: 27 | Зарегистр. 18-01-2007 | Отправлено: 00:41 12-10-2008
Griefin

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
28111981
Как создавать опции для функций я уже сам нашел. С бенчмарком сравнения 5-й и 6-й версий уже делались, см. предыдущие страницы. По бенчмарку все бы ничего, но на реальных численных расчетах 6-я версия значительно отстает от 5-й.
 
Если вам не трудно, напишите краткое руководство о том, как использовать PCT 2.0 локально на одной многопроцессорной машине.

Всего записей: 759 | Зарегистр. 19-07-2003 | Отправлено: 03:51 12-10-2008 | Исправлено: Griefin, 04:13 12-10-2008
28111981

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

Цитата:
По бенчмарку все бы ничего, но на реальных расчетах 6-я версия значительно отстает от 5-й.

Хз, я вот для себя и своих задач вывел такую закономерность для 6й версии:
- 64 битная система опережает по скорости 32 битную процентов на 15 на том же железе (меняется только операционка).
- В линуксе (opensuse 11) математика шпилит на 10-15 % быстрее чем под виндой. Из чего растет разница (качество настроек системы или же превосходство начинки ОС) я не вникал. Это такое поверхностное наблюдение..
 
На моих задачах (операции с матрицами и задачи оптимизации) значительного отставания 6ки от 5ки я не видел. Хотя и задачи такой сравнительной для себя не ставил - 6ка покорила меня своими преимуществами в плане отображения информации

Всего записей: 27 | Зарегистр. 18-01-2007 | Отправлено: 04:11 12-10-2008
Griefin

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А... все оказалось очень просто:
 
Needs["Parallel`Debug`"]
Needs["Parallel`"]
 
Для каждого из ядер процессора запускаем по slave:
 
LaunchSlave["localhost"]
LaunchSlave["localhost"]
LaunchSlave["localhost"]
LaunchSlave["localhost"]
 
Для проверки можно запустить что-то ресурсоемкое:
 
a = Table[Integrate[Sin[x]^5/x, {x, i Pi, Infinity}], {i, 0, 100}]; // Timing
 
{64.656, Null}
 
b = ParallelTable[Integrate[Sin[x]^5/x, {x, i Pi, Infinity}], {i, 0, 100}]; // Timing
 
{0.015, Null}
 
Результаты, мягко говоря, впечатляют! Как бы сделать так, чтобы ядра Mathematica по умолчанию запускались с пониженным приоритетом, и система не глохла при вычислениях?

Всего записей: 759 | Зарегистр. 19-07-2003 | Отправлено: 04:22 12-10-2008 | Исправлено: Griefin, 05:21 12-10-2008
28111981

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

Цитата:
Если вам не трудно, напишите краткое руководство о том, как использовать PCT на многопроцессорных системах.

Хелп в PCT достаточно подробен, как и во всех математиках.
А если коротко, то смотрите пример:

 
Добавлено:

Цитата:
Результаты, мягко говоря, впечатляют! Как бы сделать так, чтобы ядра Mathematica по умолчанию запускались с пониженным приоритетом, и система не глохла при вычислениях?

вы меня опередили
для задания приоритета самый простой способ - запустить фронт-енд, задать приоритет ему, после чего все запущенные им дочерние процессы получат такой же приоритет, например, "ниже среднего"

Всего записей: 27 | Зарегистр. 18-01-2007 | Отправлено: 04:39 12-10-2008 | Исправлено: 28111981, 04:40 12-10-2008
Griefin

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
У меня хелп по PCT почему-то не отображается. Одни белые страницы.

Всего записей: 759 | Зарегистр. 19-07-2003 | Отправлено: 04:50 12-10-2008
28111981

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
в мат. 6,0,3 + ПЦТ 2,0 - все путем.

Всего записей: 27 | Зарегистр. 18-01-2007 | Отправлено: 04:52 12-10-2008
Griefin

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Да, я просто запускал его из версии 5.2. Сейчас запустил из 6.0.3, там действительно все путем. Однако, 5-я версия даже простой пример считает ощутимо быстрее 6-й.
 
b = ParallelTable[Integrate[Sin[x]^5/x, {x, i Pi, Infinity}], {i, 0, 1000}]; // AbsoluteTiming
 
В 5.2:
{79.1718750 Second, Null}
 
В 6.0.3:
{206.9843750, Null}

Всего записей: 759 | Зарегистр. 19-07-2003 | Отправлено: 05:23 12-10-2008 | Исправлено: Griefin, 05:42 12-10-2008
28111981

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Griefin
А сколько у вас ядер? в итераторе ParallelTable указывается число потоков в которые параллелизуется счет. У вас что 1000 ядер?
Имхо, у вас был какой-то глюк на этой почве, потому и показало, что М5 существенно быстрее М6. Она, конечно, местами быстрее, но не так резко...

Всего записей: 27 | Зарегистр. 18-01-2007 | Отправлено: 12:09 12-10-2008
Griefin

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Четыре ядра. 1000 -- это верхний предел для бегущего индекса i. Потоков (threads) в Mathematica вообще нет. Параллелизм достигается засчет запуска четырех процессов (ядер Mathematica), каждому из которых планировщик ОС выделяет свое ядро процессора. Этот пример выбран, т.к. он очень удобен для распараллеливания: каждый кусок списка обрабатывается своим ядром. В вычислениях таких интегралов Mathematica 5 чуть быстрее, но самих интегралов много, и засчет этого выигрыш получается большим. На более серьезных расчетах в 6.0.3, даже с одним ядром, я вижу примерно такие же тормоза (в полтора-два раза медленнее, чем 5-е версии).

Всего записей: 759 | Зарегистр. 19-07-2003 | Отправлено: 19:28 12-10-2008 | Исправлено: Griefin, 19:38 12-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

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