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

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

Автор: KrgUser
Дата сообщения: 17.02.2012 17:16
Такой вопрос--- через NDSolve (Mathematica 7.1) решаю уравнение, в граничные условия входит функция от Exp[-1/Sqrt[x]] (с производными). Если эту функцию использовать напрямую, NDSolve дает ошибку, ибо почему-то (даже задавал, что x вещественна и больше нуля) не может вычислить значение Exp[-1/Sqrt[x]] при x=0 (ругается на комплексную бесконечость). Пришлось задавать функцию через конструкцию If[x=0,0,функция(Exp[-1/Sqrt[x]])] (и производных тоже, что весьма муторно). Нет ли способа поизящнее?
Автор: Andrew10
Дата сообщения: 19.02.2012 07:16
KrgUser

Цитата:
Такой вопрос--- через NDSolve (Mathematica 7.1) решаю уравнение, в граничные условия входит функция от Exp[-1/Sqrt[x]] (с производными). Если эту функцию использовать напрямую, NDSolve дает ошибку, ибо почему-то (даже задавал, что x вещественна и больше нуля) не может вычислить значение Exp[-1/Sqrt[x]] при x=0 (ругается на комплексную бесконечость). Пришлось задавать функцию через конструкцию If[x=0,0,функция(Exp[-1/Sqrt[x]])] (и производных тоже, что весьма муторно). Нет ли способа поизящнее?


Пишешь
F[0] = 0;
F[x_] := Exp[-1/Sqrt[x]];
Автор: KrgUser
Дата сообщения: 19.02.2012 17:05
А это разве не то же самое, что и мое
Код: F[x_]:=If[x=0,0,функция(Exp[-1/Sqrt[x]])]
Автор: Andrew10
Дата сообщения: 20.02.2012 09:01
KrgUser

Цитата:
А это разве не то же самое, что и мое


Последовательность действий при вычислении у Mathematic-и будут различными. Я что-то подумал, что если нужно вычислять и производные, то вариант с If будет правильнее. Или нужно добавлять правило для определения всех производных F в нуле, а как это сделать единым образом я что-то не соображу. Вот так:

Derivative[n_ /; n > 0][F][0] := 0;

не получается.
Автор: KrgUser
Дата сообщения: 20.02.2012 13:29
Вот-вот, в этом-то и загвоздка. Странно, неужели нельзя задать лишь одно правило (типа, Exp[-1/Sqrt[x]](0) = Limit[Exp[-1/Sqrt[x]], x->0], этот вариант "честнее" чем просто тупо положить, как выше, Exp[-1/Sqrt[x]](0) = 0) и приложить его для производных? У меня пока тоже не получается. Кстати, если не ошибаюсь, предел Limit[Exp[-1/Sqrt[x]], x->0] тоже не получался
Автор: r_green
Дата сообщения: 23.02.2012 02:59
KrgUser

Цитата:
неужели нельзя задать лишь одно правило (типа, Exp[-1/Sqrt[x]](0) = Limit[Exp[-1/Sqrt[x]], x->0], этот вариант "честнее" чем просто тупо положить, как выше, Exp[-1/Sqrt[x]](0) = 0) и приложить его для производных?

Вот так можно:

Код:
In[1]:= eliminateSingularity[f_][x_] := Limit[f[t], t -> x]
In[2]:= Derivative[n_]@eliminateSingularity@f_ ^:= eliminateSingularity@Derivative[n]@f
Автор: Andrew10
Дата сообщения: 08.03.2012 20:05
Добрый день всем!
Вот такой вопрос:
Есть выражение вида f[x]+f'[x]. Как сделать единым образом подстановку для функции, скажем заменить f[x] на x^2, чтобы функция заменилась сразу в обоих слагаемых, т.е., чтобы получилось
x^2+2x.
Вроде должно быть простое решение, но не могу сообразить

Добавлено:
Послал вопрос и тут же сообразил:
f[x] +f'[x] /. f -> Function[x, x^2]
Так что вопрос отпал
Автор: popkov
Дата сообщения: 07.04.2012 02:56
BookWarrior
Цитата:
друзья,
у меня шикарная проблема: экспорт в EPS или PDF рисунков с надписями, например в Helvetica, т.е. в одном из "стандартных" шрифтов, не встраивает шрифты (т.е. Helvetica в данном случае). А мне надо встраивать все, включая "стандартные" (это Times-Roman, Helvetica и ещё 10 штук).

Как это сделать, подскажите пожалуйста. Гугл не помогает. Ах да! Помогает гугл, но для линукса: там меняется настройка PS драйверов, в которых список ислключаемых ("стандартных") шрифтов прописан в одном из конфигов явно - они комментируются и всё работает. А мне надо под виндой, там всё по-другому.

Я использую pdflatex, в который отдаю EPS, сгенерённый Математикой и обработанный ps2pdf (только чтобы crop сделать - на шрифты не влияет). Контролирую встроенность шрифтов явным образом: тулза из пакета xpdf, называется pdffonts - она выдаёт список шрифтов и показывает, встроены они и чему принадлежат: документу или чему-то включённому, как картинки (мой случай).

Вот такая ситуация. Подскажите, пожалуйста.

Вместо печати на виртуальный PDF-принтер лучше использовать встроенный экспорт в PDF (качество векторной графики будет выше). Для внедрения шрифтов в полученный PDF-файл можно использовать Adobe Acrobat. При необходимости из него же возможен экспорт в EPS.

Добавлено:
Релевантная тема на другом ресурсе: "How to embed fonts when exporting Mathematica graphics as PDF?".
Цитата:
Mathematica indeed does embed the font, regardless of whether a particular font weight/slant exists or not.
Автор: vengr
Дата сообщения: 07.04.2012 16:17
BookWarrior
ещё в версиях 2-4 при работе с постскриптами из математики заметил, что лучше всех с ними справляется Wolfram Publicon или Deneba Canvas или просто постскрипт открыть текстовым редактором и вручную править шрифты
Автор: Andrew10
Дата сообщения: 07.04.2012 22:55
popkov

Цитата:
Для внедрения шрифтов в полученный PDF-файл можно использовать Adobe Acrobat. При необходимости из него же возможен экспорт в EPS.

А можно ли автоматизировать этот процесс в Acrobate-? Сейчас каждую каждую подпись в каждой картинке приходится исправлять вручную. А если картинок много?
Автор: popkov
Дата сообщения: 08.04.2012 05:36
Andrew10
В Acrobat X есть "Мастер операций", который, похоже, как раз для таких задач и предназначен. Однако я не имею опыта работы с ним.

Другой путь - объединить все PDF-файлы в один, внедрить шрифты, затем снова разбить на отдельные файлы...
Автор: Andrew10
Дата сообщения: 08.04.2012 10:18
popkov

Цитата:
Другой путь - объединить все PDF-файлы в один, внедрить шрифты, затем снова разбить на отдельные файлы...


Спасибо за ответ. Но тут же следующий вопрос . Я не очень понимают слов "внедрить шрифты". Как это сделать в Акробате? Сейчас я просто тупо вручную перенабираю каждую кириллическую надпись на рисунке.
Автор: popkov
Дата сообщения: 08.04.2012 20:20
Andrew10
Цитата:
Сейчас я просто тупо вручную перенабираю каждую кириллическую надпись на рисунке.
Ну это уж точно излишне! Внедрение шрифтов - точно не проблема, самый тупой и надежный (но не рекомендуемый) способ - просто открыть PDF-файл в Acrobat и напечатать на виртуальный принтер Acrobat Distiller. При этом все шрифты по умолчанию будут внедрены, качество (с точки зрения вывода на печать) сохраняется, однако практика показывает, что сам Acrobat почему-то менее качественно рендерит полученный PDF-файл на экране компьютера, чем исходный (это утверждение касается векторной графики, кроме шрифтов). Поэтому рекомендуется пользоваться инструментами допечатной подготовки, имеющиеся в Acrobat. В каждой версии они расположены в разных местах меню, называются и работают по-разному, так что без экспериментов не обойтись. Давно не занимался этим, могу только сказать, что в 7-м Acrobat я успешно справился с этой задачей, когда она возникла. С тех пор надобности не было. В новых версиях Mathematica, согласно отзывам, по-умолчанию происходит внедрение шрифтов, если они установлены на компьютере.
Автор: popkov
Дата сообщения: 09.04.2012 08:44
Andrew10
Кажется, нашел. В Acrobat X это в меню Просмотр > Инструменты > Допечатная подготовка. Далее надо кликнуть "Предпечатная проверка" в открывшемся списке действий справа, и откроется окно Preflight. В нем надо найти раздел "PDF fixups", развернуть, и далее выделить пункт "Embed fonts". Затем нажать кнопку "Analyse and fix" в правой нижней части окна. Данный метод, правда, не всегда работает: иногда выдается сообщение об ошибке. В таких случаях остается только печать на виртуальный принтер Acrobat Distiller...
Автор: Andrew10
Дата сообщения: 10.04.2012 04:26
popkov

Спасибо за помощь. Попробовать смогу завтра, сегодня занятия.
Автор: BookWarrior
Дата сообщения: 15.04.2012 09:25
popkov

Цитата:
Вместо печати на виртуальный PDF-принтер лучше использовать встроенный экспорт в PDF
я не печатаю на виртуальный принтер, я делаю экспорт из Математики, как написал.


Цитата:
Mathematica indeed does embed the font, regardless of whether a particular font weight/slant exists or not
я думаю это о каком-то специфическом случае, т.е. например когда шрифт используется, а математика встраивает не только его, но и все его начертания (об этом написано в цитате). Но она не встраивает 14 стандартных шрифтов, потому что они подразумеваются везде. Однако это нужно, и часто. Большое упущение, что такие пакеты не позволяют это выбирать в опциях при сохранении - это исключительно легко реализовать и чудовищно трудно обойти, если этого нет.

Кстати, ту ветку по линку я видел, она не помогает.


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


Цитата:
Кажется, нашел. В Acrobat
вот спасибо!! Встроилось! Хотя и частично. У меня вообще из математики PDF картинок вышел с невстроенными шрифтами Mathematica (такой fontface), не знаю, почему, но с этой точки уже смогу сам расковырять. Спасибо за Акробатный совет, Хелветику встроило - победа!
Автор: popkov
Дата сообщения: 15.04.2012 10:42
BookWarrior
Печать на на виртуальный принтер Acrobat Distiller из Acrobat должна приводить к гарантированному встраиванию всех шрифтов (кроме запрещенных к встраиванию).
Автор: BookWarrior
Дата сообщения: 15.04.2012 13:16
popkov
ок, буду иметь в виду, я не знал.
В составе xpdf есть тулза pdffonts, в том числе и для виндовс, она сразу делает листинг, как непосредственно статуса встроенности шрифтов документа (emb), так и встроенности "внешних" шрифтов, обычно приходящих с картинками (sub).


это вдруг кому-нибудь пригодится, очень удобная вещь. Вот сейчас, в частности, у меня экспорт из математики не дал встраивания её странных шрифтов в PDF-картинку и Акробат это не пофиксил с первого захода. Зато хелветику встроил. Но они вроде этого и не обещали для PDF (я не видел) - но обещали для EPS, видимо отличаются настройки сохранения.
Автор: popkov
Дата сообщения: 15.04.2012 20:07
BookWarrior
Сейчас подумалось: возможно, уже существуют утилиты, специально предназначенные для встраивания шрифтов в PDF. Сомнительно, что Acrobat - единственная программа, способная на это. По многим параметрам его уже давно переплюнули продукты сторонних разработчиков: достаточно упомянуть Infix PDF Editor как гораздо более полнофункциональный редактор PDF и многочисленные программы преобразования PDF в формат Word и векторные форматы, по сравнению с которыми Acrobat отстает уж точно более чем на 5 лет (огромный срок для такой отрасли!), а тенденции к развитию в этих направлениях у него не наблюдается. Можно по аналогии предположить, что, так же, как экспорт в Word в Acrobat де-факто является артефактом, который не менялся в последние 10 лет, так и функция встраивания шрифтов "Embed fonts" - не более чем артефакт (это не касается печати на виртуальный принтер Distiller)...
Автор: Andrew10
Дата сообщения: 15.04.2012 21:25
BookWarrior
popkov

Приболел, не смог вовремя попробовать рецепт лечения файла при экспорте рисунка с кириллицей в pdf, данный гуру popkov на предыдущей странице. Сейчас попробовал, ничего не получилось .
Действовал так:
Код:

Код: gr = Plot[x^2, {x, -1, 1},
PlotLabel -> "Это попытка экспорта рисунка с кириллицей в PDF",
BaseStyle -> {FontFamily -> "Arial", FontSize -> 12,
FontSlant -> Italic},
LabelStyle -> {FontFamily -> "Arial", FontSize -> 12}]
Export["e:\\temp\\test.pdf", gr, "PDF"];
Автор: popkov
Дата сообщения: 16.04.2012 06:33
Andrew10
Для кириллицы, к сожалению, только два варианта: печать непосредственно из FrontEnd на виртуальный PDF-принтер или же конвертация всех кириллических символов в контуры (хорошо работает не со всеми шрифтами, в частности для Arial Italic на моей машине получаются неправильные межбуквенные интервалы):


Код: outline = First@ImportString[ExportString[#, "PDF"], "PDF"] &;
gr = Plot[x^2, {x, -1, 1},
PlotLabel ->
outline@Style["Это попытка экспорта рисунка с кириллицей в PDF",
12, FontFamily -> "Arial", Magnification -> 1],
BaseStyle -> {FontFamily -> "Arial", FontSize -> 12,
FontSlant -> Italic}]
Автор: BookWarrior
Дата сообщения: 16.04.2012 06:45
popkov

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


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


Цитата:
преобразования PDF в формат Word
непонятно, как это может работать: после вёрстки в PS и производные форматы текст прекращает быть Ворд-форматным. Принципиально. Вся мета-инфа разметки теряется, в худшем случае всё преобразуется в векторную картинку, включая буквы, и коды символов вообще отсутствуют в документе - всё явится картинкой. Думаю, если вы видели такие программы, они лишь какую-то урезанную функцию выполняют, вроде выгрузки в том же виде, что и "боксы" в PS-документе. Это возможно и это давно есть в Акробате. В нём вообще всё есть, на самом деле, что сделать возможно. Но есть вещи, вроде такого преобразования, которые в принципе не должны быть возможны.

Другими словами PS - это финальный формат, печатная подготовка является первостепенной задачей, это формат, не предназначенный для дальнейшей работы с самой информацией документа. А Ворд - это как раз формат для работы с информацией, где печатной подготовке отводится второстепенная роль: лишь бы редактируемость была высокой и не надо было пересобирать. Разница такая же, как между языками интерпретаторами и компиляторами.

Andrew10

Цитата:
Рисунок создается, в окне Математики выглядит нормально
я ещё не пробовал, но скорее всего надо делать так: из математики выгружать в PDF или EPS, затем встраивать шрифты указанным способом через Акробат, а потом вставлять в финальный документ для pdflatex. Собранный PDF по идее в колонке sub проги выше должен тоже давать везде Yes, типа со всех картинок пришли встроенные шрифты. Но я не пробовал - это следующее, что попробую, когда руки доберутся. Т.е. идея такая: на каждом этапе первый сгенерённый PDF сразу фиксить, встраивать шрифты. Если это не поможет, не знаю как делать.

А, ещё вот что: я не знаю, насколько критично сообщение No в столбике sub, если emb = Yes. Казалось бы, если шрифт есть, наверное это и есть конце истории. Так что сказанное выше - лишь для перестраховки. Получается, что в виде, когда Yes, No даже лучше - меньше места будет занимать, ибо шрифт не дважды встроен, а лишь единожды. Но если картинку умудриться экспортировать, то в ней не будет шрифта.


Цитата:
И как перейти к нужной кодировке, непонятно
я боюсь кодировка никак не меняется на лету. Скорее всего проблема в том, что шрифт не имеет кириллических глифов. В адобе отличается Arial (и прочие) для англо и кир: для кир это Arial Cyr. Но попытка его встроить указанным методом почему-то как-будто подцепляет другой шрифт, видимо просто Arial, и отрисовать неможет.

Короче, порыв чуточку, стало быстро понятно, что проблема с кириллицей и PDF - серьёзная. Поищите, я не был пристрастен, но в качестве работающих альтернатив, берите EMF экспорт из математики, она векторным рисунком всё сохранит - на печати выглядит неотличимо от электронного текста. Поскольку у Математики в принципе всегда баги с рендерингом содержимого в картинку (боже, что она с ним делает!), то я нашёл это единственным надёжным способом экспортировать скриншоты кода в векторный формат (вместе с кодом и т.п.). А потом EMF, например, вставляете в Ворд и печатаете. В прочие векторные форматы сохраняет из рук вон плохо. Шрифты при этом подходе, конечно рендерятся в векторные сегменты.

С PDF+кириллица ещё будет проблема с поиском в PDF: посмотрите, что кириллица даёт, если попытаться её скопировать из PDF и вставить в Notepad - так кракозяблы. Я не знаю, как это решается тоже. Это когда PDF из pdflatex сгенерён. Этим страдают даже статьи УФН (успехи физ. наук).
Автор: popkov
Дата сообщения: 16.04.2012 09:31
Andrew10
BookWarrior

Цитата:
берите EMF экспорт из математики, она векторным рисунком всё сохранит - на печати выглядит неотличимо от электронного текста.

Хорошая альтернатива, сам я именно так и поступаю обычно: в действительности этот способ практически эквивалентен непосредственной печати из FrontEnd на виртуальный PDF-принтер - при этом в спуле принтера создается EMF-файл высокого разрешения (по умолчанию он имеет качество 600 dpi в большинстве приложений и может быть даже непосредственно извлечен оттуда такими утилитами как PrintMirror). Однако есть и различие: при печати нет контроля качества генерации EMF-файла (а точность позиционирования векторных объектов в нем соответствует разрешению, с которым он рендерится на экране, поэтому чем меньше рисунок, тем менее точный веторный файл будет сгенерирован!), а при экспорте в EMF можно или задать больший ImageSize, или с помощью Magnify масштабировать его.

Сравнил только что в Mathematica 8.0.4 качество экспорта в EMF и печати в PDF рисунка буквы "a":

Код:
graphics1 =
First@ImportString[
ExportString[Style["a", FontFamily -> "Times"], "PDF"], "PDF"];
Export["C:\\test1.emf", graphics1]
Автор: SHREKES
Дата сообщения: 16.04.2012 18:27
не подскажете как сделать чтобы все шаги показывала или развернутый расчет делала
а то установил 8-ю версию а она при расчете показывает только ответ
Автор: yuk1958
Дата сообщения: 16.04.2012 19:28
SHREKES


Цитата:
а она при расчете показывает только ответ

Извините, пожалуйста, за оффтоп, но все программы, которыми довелось пользоваться (Maple, MathCad), как правило, показывают только ответ. В Maple есть команда: ShowSolution, которая позволяет видеть шаги вычислений. В Mathematica я новичок, но может приведенное выше Вам поможет?
Автор: SHREKES
Дата сообщения: 16.04.2012 20:19
Да знаю я, только в Mathematica есть функция StepMonitor, но там всего 2 шага: вопрос и ответ
Автор: popkov
Дата сообщения: 16.04.2012 23:39
SHREKES
Используйте Trace или TraceScan. Предупреждение: логика систем символьной математики сильно отличается от человеческой...
А вообще, есть отдельный специализированнный коммерческий пакет для "человеческих" решений.
Автор: BookWarrior
Дата сообщения: 17.04.2012 08:46
popkov

Цитата:
При генерации PDF из Word

я только случай "когда PDF из pdflatex сгенерён" имел в виду, там может не очень акцентировал это, но написал. Это исключительно латексно-PDF-ная фишка, и как с ней справляться, я хз. Она убила мой моск. Весь.

Вообще если кто pdflatex с кириллицей решит проблему (т.е. чтобы копировались буквы нормально из PDF документа), напишите, потомки вас не забудут, по-моему проблема больше 10 лет существует без прогресса. Зато кириллические шрифты (pscyr) сделаны просто на ура и в огромном многообразии. Убийственно просто, что никто копирование не доработал.
Автор: SHREKES
Дата сообщения: 17.04.2012 18:21
popkov
подскажи как и куда команду вбивать: до или после формулы и что дополнительно проставлять (скобки и т.п)??
Автор: popkov
Дата сообщения: 17.04.2012 21:10
SHREKES
А посмотреть страницу документации Trace - так трудно? Ясное дело, надо интересующий код обернуть в Trace или TraceScan c соответствующими параметрами. Но "человеческого" ответа ожидать не следует: здесь царствует машинная логика.

Страницы: 12345678910111213141516171819202122232425262728293031323334

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


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