Ru-Board.club
← Вернуться в раздел «Программы»

» Mathematica (математика)

Автор: Griefin
Дата сообщения: 21.05.2008 14:16
А как определять места наибольшей кривизны не вычисляя производной? Наверняка там как раз это и делается. По крайней мере итерациями: уменьшается шаг x-x0, до тех пор, пока f(x)-f(x0) не попадет в определенный интервал.
Автор: KChernov
Дата сообщения: 21.05.2008 14:58
popkov

Цитата:
Насколько я знаю, нет - и не может быть, поскольку результат, выдаваемый Solve[] и Reduce[], может содержать условия, и вообще иметь сложную структуру. Solve[] выдаёт ответ в форме правил замены, для Reduce[] есть специальная команда, которая заставляет его делать то же. Чтобы воспользоваться результатом, надо использовать полученные правила:
bGlobal=b/.Solve[a+b==1,b]
Можно присвоить и b, но тогда повторное выполнение Solve будет приводить к ошибке, т.к. b уже будет иметь конкретное значение:
b=(b/.Solve[a+b==1,b])

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


Цитата:
Как правильно вставлять в Ноутбук текст? У меня не получается сразу вставлять так, чтобы субж не попробовал его выполнить То есть если потом уже вставить - нормально, а вот если сразу...

Не сталкивался с такой проблемой, опиши подробнее.

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

Добавлено:

Цитата:
Гораздо хуже то, что разработчики не спешат исправлять очевидные баги в таких базовых функциях, как Show[], Export[] и т.п. Написав о нескольких таких багах в официальную группу новостей, я понял, почему авторы одной статьи о системах символьной математики назвали отношение разработчиков Mathematica к аргументированной критике в свой адрес "болезненным"! Вот как они себя ведут: на сообщения о реальных багах просто не отвечают, оставляя их безо всякого внимания. Многие такие сообщения не пропускают модераторы. Авторов таких сообщений банят после 2-3 постов о багах или после даже одного поста с действительно обоснованной, аргументированной критикой в адрес компании. На сообщения о тупейших недоработках, тянущихся десятилетиями от версии к версии, они отвечают, что "это известное ограничение". И, судя по тому, что пишут в группе новосей, никому до этого дела нет! Многие пользователи занимают следующую позицию: "чтобы извлечь больше пользы от программы, не следует бороться с ней!". И при этом забывают, что для извлечения большей пользы надо уметь использовать программу наиболее гибким образом, а при таком использовании неизбежно натыкаешься на тупые баги! А сообщать о них нельзя - разработчикам неприятно...

Типа надо искать разумную альтернативу (и желательно открытую)?..
Автор: Griefin
Дата сообщения: 21.05.2008 18:53
С таким подходом продукт рано или поздно превратится в профанацию и потеряет доверие. Такое впечатление, что 6-я версия была написана исключительно для создания контента на научно-популярном сайте http://mathworld.wolfram.com/. Иначе и не объяснить такого количества нововведений в плане графики. Альтернативы, даже открытые, в принципе существуют, но они не столь универсальны и развиты, как Mathematica.

Добавлено:

Цитата:
Специально выделенных комментариев (как в языках программирования) здесь вроде бы нет.

Там не комментарии, а различные стили текста: заголовки разных уровней вложенности и Input. Ячейки в стиле Input обрабатываются ядром, остальные -- нет.
Автор: vb2008
Дата сообщения: 21.05.2008 19:24
popkov writes

Цитата:
Гораздо хуже то, что разработчики не спешат исправлять очевидные баги в таких базовых функциях, как Show[], Export[] и т.п. Написав о нескольких таких багах в официальную группу новостей, я понял, почему авторы одной статьи о системах символьной математики назвали отношение разработчиков Mathematica к аргументированной критике в свой адрес "болезненным"! Вот как они себя ведут: на сообщения о реальных багах просто не отвечают, оставляя их безо всякого внимания. Многие такие сообщения не пропускают модераторы. Авторов таких сообщений банят после 2-3 постов о багах или после даже одного поста с действительно обоснованной, аргументированной критикой в адрес компании. На сообщения о тупейших недоработках, тянущихся десятилетиями от версии к версии, они отвечают, что "это известное ограничение". И, судя по тому, что пишут в группе новосей, никому до этого дела нет! Многие пользователи занимают следующую позицию: "чтобы извлечь больше пользы от программы, не следует бороться с ней!"


Золотые слова...

Поэтому в итоге я просто перестал писать в MathGroup и сосредоточился на Google Groups... чего и вам всем, у кого есть похер в похеровницах, желаю

Mathematicу постами по багам не испортишь )
Автор: popkov
Дата сообщения: 21.05.2008 23:12
KChernov
Цитата:
Специально выделенных комментариев (как в языках программирования) здесь вроде бы нет.
Есть! Комментарии заключаются в "(*" и "*)" (без кавычек)! И могут присутствовать где угодно. Интерпретатор игнорирует всё, что заключено в эти тэги.

Griefin

Цитата:
А как определять места наибольшей кривизны не вычисляя производной? Наверняка там как раз это и делается. По крайней мере итерациями: уменьшается шаг x-x0, до тех пор, пока f(x)-f(x0) не попадет в определенный интервал.
Думаю, итерациями, ты прав. Пакет умеет брать производную символьно, но здесь это не используется.

KChernov
Цитата:
Типа надо искать разумную альтернативу (и желательно открытую)?..

Где её найдёшь, эту альтернативу??

Griefin
Цитата:
С таким подходом продукт рано или поздно превратится в профанацию и потеряет доверие.
У Wolfram Research для борьбы с этим есть методы PR... Вот Maple - вообще не заслуживает доверия, а пользователей чуть ли не больше, чем у Mathematica, и до сих пор Maple - более известный пакет... По Maple издаётся много книг, что тоже способствует популярности - он "на слуху". А по Mathematica - меньше. А почему? Потому, что и спрос со стороны пользователей пакета на такие книги меньше. А не потому ли он меньше, что пакет куда более гибок, интуитивно понятен, безглючен, и пользователи куда менее зависят от внешней документации? То, что спрос на книги по Maple выше - легко видеть даже по нашему форуму: есть лишь единичные запросы на книги по Mathematica, но запросы на книги по Maple появляются регулярно... (можно легко убедиться в этом самостоятельно, зайдя в соответствующие темы в eBookz, а также в Варезник).
Кроме того, такие фирмы больше всего боятся официально признаться в багах продукта. Потому что реакция значительной части пользователей совершенно тупая: "Узнав о том, что Mathematica раньше выдавала неправильный ответ, - как мы можем доверять ей дальше???" Самое, наверное, печальное, - что так же реагирует и само руководство компании! Ведь там, мягко говоря, далеко не все "ведущие специалисты" - на самом деле специалисты в соответствующих областях... Чем дальше - тем глубже наступает засилье блатных бездарей с ОГРОООМНЫМ самомнением и категорическим нежеланием пошевелить мозгами.

Цитата:
Такое впечатление, что 6-я версия была написана исключительно для создания контента на научно-популярном сайте http://mathworld.wolfram.com/.
Кстати, грамотное наблюдение!
Автор: TomasVercetti
Дата сообщения: 22.05.2008 10:54
Подскажите пожалуйста, а как можно подавить сообщения об ошибке в Math6? Есть функция типа f[x_]:=(s/.FindRoot[...]). При нахождении функции возникает сообщение, которое я могу спокойно игнорировать. Проблема в том, что при Manipulate[f[x],...] это сообщение вываливается при каждом движении слайдера. Как этого избежать?

Смотрю вариант перехода на Derive. Буду благодарен, если кто-нибудь сможет ответить на вопрос http://forum.ru-board.com/topic.cgi?forum=5&topic=27169 .
Автор: KChernov
Дата сообщения: 22.05.2008 14:14
popkov

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

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


Цитата:
Где её найдёшь, эту альтернативу??

Есть несколько идей - проверю - отпишусь

Griefin

Цитата:
Там не комментарии, а различные стили текста: заголовки разных уровней вложенности и Input. Ячейки в стиле Input обрабатываются ядром, остальные -- нет.

У меня не помогает применение текстового стиля - все равно выполняется (правда проверял только на самом мелком, так как заголовки пока не нужны)


Цитата:
Такое впечатление, что 6-я версия была написана исключительно для создания контента на научно-популярном сайте http://mathworld.wolfram.com/.

А многие продукты именно так и рождаются - пишется что-то под конкретную задачу, а потом жалко это выкидывать и пытаются продавать дальше, периодически допиливая напильником
Вон по тому же Фортрану это из всех щелей видно
Автор: popkov
Дата сообщения: 22.05.2008 21:08
KChernov

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

Но это не про Mathematica! Слава богу!
У меня нет сомнений, что этот пакет разрабатывали с самого начала талантливейшие программисты, которые ставили задачей создание именно универсальной системы компьютерной математики! Такая крутая система, конечно, не могла родиться как побочный продукт решения какой-то мелкой задачи.

Даже не верится, что в наше время могут быть настолько образованные, талантливые и свободные в своём творчестве люди, как те, кто разрабатывал архитектуру Mathematica... Безусловно, над ней работали выдающиеся программисты с высочайшей квалификацией в области алгоритмов и вообще методов математики!

Так что мой вывод о наличии альтернатив и возможности появления их в будущем весьма пессимистичен. Талантливые люди и сейчас есть, но где им получить то образование, которое было доступно полвека назад?? И кто им позволит делать за чужой счёт, что душа просит (а точнее - не душа, а научная честность, которой в наше время негде заразиться)??
Автор: TomasVercetti
Дата сообщения: 23.05.2008 10:42
Отвечая на свой вопрос - http://reference.wolfram.com/mathematica/tutorial/WarningsAndMessages.html .
Автор: popkov
Дата сообщения: 25.05.2008 10:22
Только что столкнулся с совершенно отвратительным багом функции Sum[] Mathematica версий 5.2 и 6.
Попробуйте следующее:

c[n_] := k cc^n;
c[1] := cc;
Sum[c[m], {m, 1, Infinity, 1}] // FullSimplify
c[1] + Sum[c[m], {m, 2, Infinity, 1}] // FullSimplify
Sum[k cc^n, {n, 1, Infinity, 1}] // FullSimplify
c[1]


Очевидно, Sum[] игнорирует специальное значение c[1] := cc.

Это совершенно жуткий баг, на мой взгляд! В других случаях он может быть совсем неочевиден!

Соответствующие разделы документации: tutorial/MakingDefinitionsForFunctions и tutorial/TheOrderingOfDefinitions
Автор: Kukumber2121
Дата сообщения: 06.06.2008 08:17
Как объединить несколько блоков вычислений в один, а то как то не удобно много раз Shift-enter нажимать. Заранее благодарен за помощь.
Автор: KChernov
Дата сообщения: 06.06.2008 11:10
Kukumber2121

Цитата:
Как объединить несколько блоков вычислений в один, а то как то не удобно много раз Shift-enter нажимать. Заранее благодарен за помощь.

Присоединяюсь к вопросу.
А то сделаешь файлик с вычислениями, сохранишь его, а при открытии приходится все вычисления проделывать сначала (сделанные до вычисления отображаются правильно, но при попытке вычислить/перевычислить что-то на основе уже введенного в прошлый раз, вычисляется так, как будто оно не определено)
Автор: Griefin
Дата сообщения: 06.06.2008 13:43
Можно выделить нужные ячейки и пометить Cell properties > Initialization Cell, тогда ядро автоматически обработает их при первом же запуске в контексте данного документа.
Автор: Kukumber2121
Дата сообщения: 07.06.2008 03:05
Griefin
Спасибо за совет. Только проблема от этого не решается. Нужно отмечать initialization cells при каждом новом компилировании.

Добавлено:
KChernov
В общем ответа на вопрос не нашел. Выкрутился так-все вычислительные блоки загнал в цикл:
Do[a1;a2;....;{i,imin,imax}]
Работает исправно.
Автор: Griefin
Дата сообщения: 07.06.2008 12:44
popkov

Цитата:
У меня нет сомнений, что этот пакет разрабатывали с самого начала талантливейшие программисты, которые ставили задачей создание именно универсальной системы компьютерной математики! Такая крутая система, конечно, не могла родиться как побочный продукт решения какой-то мелкой задачи.

По легенде, Mathematica начал разрабатывать Stephen Wolfram для проведения расчетов по ядерной физике. Видимо потом он (при всем уважении) свихнулся на клеточных автоматах и полностью поручил это дело программистам, которые несколько далеки от науки.
Автор: KChernov
Дата сообщения: 07.06.2008 13:07
Griefin

Цитата:
о легенде, Mathematica начал разрабатывать Stephen Wolfram для проведения расчетов по ядерной физике.

Я и говорю, что делали под конкретную задачу, а потом решили еще и заработать...
Автор: Griefin
Дата сообщения: 07.06.2008 13:14

Цитата:
Нужно отмечать initialization cells при каждом новом компилировании.

По своему назначению, такие ячейки должны запускаться при первом запуске ядра внутри данного документа. Поэтому нужно закрывать и перезапускать ядро. Если нужно выполнять ячейки много раз, то действительно цикл больше подходит.
Автор: egorovshura
Дата сообщения: 08.06.2008 19:15
Можно ли декодировать закодированный package? Ведь он раскодируется на этапе загрузки командой Get?
Автор: Kukumber2121
Дата сообщения: 09.06.2008 04:40
Вопрос к знатокам:
Как реализовать численное интегрирование с переменным пределом? То есть:
считается один интеграл численно, его предел интегрирования есть независимая переменная для функции, которая также интегрируется (естественно численно). Для примера:

Добавлено:
NIntegrate[Exp[-(NIntegrate[Exp[-y^2], {y, 0, x}])^2], {x, 0, 1}]

Добавлено:
Что самое интересное, система выдает ответ, несмотря на предупреждение:
NIntegrate::nlim: y = x is not a valid limit of integration
0.803777
Можно ли этому ответу верить?

Автор: KChernov
Дата сообщения: 20.06.2008 16:40
Набрал выражение, запустил - и пошла рекурсия
А как ее остановить-то?
Все меню облазил, всякие Интерапт/Аборт Эвалюэйшн пробовал - все равно считает - так и пришлось документ закрывать
Это такая "фича"? Или все таки как-то можно в таких ситуациях прекратить исполнение?

Добавлено:
Griefin

Цитата:
Можно выделить нужные ячейки и пометить Cell properties > Initialization Cell, тогда ядро автоматически обработает их при первом же запуске в контексте данного документа.

Попробовал так сделать - оно даже после загрузки не сбрасывается, но при загрузке документа ничего не инициализируется
Где еще что надо включить?
Причем Эвалюэйт инициализационных ячеек тоже ни чего не делает

Добавлено:
Kukumber2121

Цитата:
Нужно отмечать initialization cells при каждом новом компилировании.

У меня этот флаг не сбрасывается, но от этого не легче

Добавлено:
Выделение полей текстовыми после выключение исполняемости сохраняется, но на процесс исполнения это опять же не влияет.
Да и тыкать в менюшку задалбывает, и ни панелей инструментов, ни хоткеев - в общем юзабилити то еще
Автор: KChernov
Дата сообщения: 23.06.2008 10:30
В общем так и не понял, как же форматировать текст, чтобы он не выполнялся - все равно выполняется (даже если флаг выполнения снять)
Автор: popkov
Дата сообщения: 27.06.2008 15:45
KChernov
Цитата:

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

Спасибо, попробую так
Автор: popkov
Дата сообщения: 24.07.2008 16:08
Любопытное свойство функции интегрирования в 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...
Автор: vengr
Дата сообщения: 31.07.2008 17:39
popkov

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

помоему лучше использовать Mathematica + Publicon, всё же совместимость должна быть лучше, хотя с 6.03 сам не проверял
Автор: 28111981
Дата сообщения: 21.09.2008 14:13

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

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

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

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

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

Очевидно, ни о какой оптимизации здесь речи быть не может. Кроме того, всё это срабатывает, только если перед этим вы уже пытались взять интеграл без Simplify! Именно последнее обстоятельство и наводит на грустные мысли... Это уже похоже на шаманство какое-то!
Автор: 28111981
Дата сообщения: 05.10.2008 20:18
Повторю еще раз

a=1+x и a=Simplify[1+x] дает видимый результат 1+х, но внутреннее представление этого самого 1+х у математики будет разное.
Автор: popkov
Дата сообщения: 06.10.2008 17:12
28111981
Ну а как вы объясните самый главный-то глюк:

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

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

Ну, это достаточно просто объяснить
Математика кеширует результаты предыдущих вычислений, чтоб ускорить доступ при повторных обращениях. Если кеш сливать, то вы даже с симплифаем результата не получите. Вот пример:
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 очищает кеш символьных результатов (см. хелп).
Что там "внутре" после первой команды получается - непонятно, т.к. видимый результат - повтор введенного выражения. Но, очевидно, что трансформация какая-то есть, она кешируется и потом используется при попытке симплификации..
Мало того, поставьте вместо симплифая евалюэйт, и получите результат...
Думаю, что в самом интегрейте упростили или недоделали процедуру оптимизации выражения, потому он и тупит... А может это фича такая - для многих функций указывается, что вычисление идет непрямым путем, так что ставьте евалюэйт ,чтоб "процесс пошел" как надо.. а тут не указали
Автор: Griefin
Дата сообщения: 10.10.2008 20:43
Подскажите, как создать опции для пользовательской функции?

Страницы: 12345678910111213141516171819202122232425262728293031323334

Предыдущая тема: Идея несуществующей программы...


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.