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

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

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

xy



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

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


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

Всего записей: 10530 | Зарегистр. 28-05-2003 | Отправлено: 16:00 01-12-2003 | Исправлено: virussnu, 14:17 05-11-2018
Partner1



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ognev
 
Можно программно удалить. Посмотрите на Stack Overflow, там написали функцию CleanNotebook для этого:
https://mathematica.stackexchange.com/questions/13978

Всего записей: 266 | Зарегистр. 28-11-2007 | Отправлено: 16:14 06-11-2018 | Исправлено: Partner1, 16:16 06-11-2018
Ognev

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Partner1,
 
спасибо! Но не очень я доверяю этим макросоподобным функциям. Лучше буду по-старинке, руками ))) А то хватило мне нескольких случаев, когда просто при работе с Notebook-ом часть ячеек по неведомой причине исчезали.

Всего записей: 380 | Зарегистр. 07-09-2004 | Отправлено: 18:31 06-11-2018
Ognev

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

Код:
ContourPlot[{x y==1, x y==1/2 ,x y==1/3}, {x,0,1}, {y,0,1}]

а вот такой выводит пустой график без линий:

Код:
ContourPlot[Table[x y==1/n, {n,3}], {x,0,1} ,{y,0,1}]

?  
Например, с тем же Plot нет таких проблем почему-то.  
 
Может нужно что-то вроде приведения типов сделать или еще какой шаманизм? С RegionPlot у меня была в чем-то похожая проблема, когда я под нее передавал кусок массива, вырезанный через Part. В этом случае строился только первый элемент. Типа

Код:
RegionPlot[MyList[[All,1]], {x,0,1}, {y,0,1}]

строил только область MyList[[1,1]]. Но через промежуточную переменную все работало:

Код:
qqq=MyList[[All,1]];
RegionPlot[qqq, {x,0,1}, {y,0,1}]

Так строились все области.

Всего записей: 380 | Зарегистр. 07-09-2004 | Отправлено: 20:27 19-11-2018
Partner1



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

Цитата:
Может ли кто-то объяснить, почему вот такой код работает нормально (все строится):

Код:
 
ContourPlot[{x y==1, x y==1/2 ,x y==1/3}, {x,0,1}, {y,0,1}]

а вот такой выводит пустой график без линий:

Код:
 
ContourPlot[Table[x y==1/n, {n,3}], {x,0,1} ,{y,0,1}]

 

 
Как я понял, функция ContourPlot не вычисляет аргументы, а сразу подставляет численные значения. Там нужно иcпользовать Evaluate:

Код:
ContourPlot[Evaluate[Table[x y == 1/n, {n, 3}]], {x, 0, 1}, {y, 0, 1}]


Всего записей: 266 | Зарегистр. 28-11-2007 | Отправлено: 12:05 20-11-2018 | Исправлено: Partner1, 12:07 20-11-2018
Ognev

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Partner1,
 
да, так все работает, спасибо! Жаль, что не пишут они о таких вещах в хелпе.
 
Upd
Partner1, пользуясь случаем спрошу. Как считаете, что лучше использовать при численном вычислении аналитического выражения: ReplaceAll, With или какие-то другие варианты. Типа:

Код:
(x^2 + y^2)/.{x->1, y->3}

или

Код:
With[{x=1, y=3}, x^2 + y^2]

или что-то еще?
Сам не нашел ответа на этот вопрос. Оставил как сделал исходно, через ReplaceAll. Но потенциально этот кусок кода будет вызываться много раз на сложных выражениях и хотелось использовать наиболее быструю конструкцию.

Всего записей: 380 | Зарегистр. 07-09-2004 | Отправлено: 13:42 20-11-2018 | Исправлено: Ognev, 14:00 20-11-2018
karl_karlsson



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ognev
Потому что есть ListContourPlot.
Где-то в руководстве ContourPlot должно быть что-то насчет ListContourPlot.

Всего записей: 1675 | Зарегистр. 14-03-2007 | Отправлено: 17:55 20-11-2018
Partner1



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

Цитата:
Partner1, пользуясь случаем спрошу. Как считаете, что лучше использовать при численном вычислении аналитического выражения: ReplaceAll, With или какие-то другие варианты. Типа:
 
Код:
(x^2 + y^2)/.{x->1, y->3}
 
или
 
Код:
With[{x=1, y=3}, x^2 + y^2]

 
Это трудно сказать. В любом случае лучше замерять время многократного выполнения выражения. Второй вариант у меня в 3 раза быстрее:
 

Код:
RepeatedTiming[(x^2 + y^2) /. {x -> 1, y -> 3}]

 

Код:
RepeatedTiming[With[{x = 1, y = 3}, x^2 + y^2]]

Всего записей: 266 | Зарегистр. 28-11-2007 | Отправлено: 18:28 20-11-2018 | Исправлено: Partner1, 18:30 20-11-2018
Ognev

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
karl_karlsson,
тут ListContourPlot не подойдет. Потому как строятся несколько аналитически заданных изолиний. Просто их удобнее через Table в ContourPlot загонять.
 
Partner1,
спасибо за подсказку! Не знал про RepeatedTiming. Попробую на реальных выражениях оба варианта. А с этими (от балды написал, для примера) у меня тоже второй вариант получился в 3 раза быстрее.

Всего записей: 380 | Зарегистр. 07-09-2004 | Отправлено: 19:01 20-11-2018
Partner1



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

Цитата:
Partner1,
спасибо за подсказку! Не знал про RepeatedTiming. Попробую на реальных выражениях оба варианта. А с этими (от балды написал, для примера) у меня тоже второй вариант получился в 3 раза быстрее.
 

 
RepeatedTiming  новая функция, нашел в справке по AbsoluteTiming. Раньше пользовался AbsoluteTiming и Do. Например посчитать время 1000 кратного выполнения кода f.
 

Код:
 AbsoluteTiming[Do[f, {i, 1000}]]  

Всего записей: 266 | Зарегистр. 28-11-2007 | Отправлено: 10:14 21-11-2018 | Исправлено: Partner1, 14:43 05-03-2019
Ognev

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Чего-то не смог найти ответа на простой вопрос. Может кто подскажет.  
Есть ли возможность из NSum[...,{n,1,n0}] получить кроме самого ответа еще все промежуточные суммы. Ничего умнее, чем дублирование суммирования не придумалось:  

Код:
s = 0;
Reap[NSum[1/n^2, {n, 1, 100}, EvaluationMonitor :> Sow[s = s + 1/n^2], NSumTerms -> 100]]

Но может есть какой-то встроенный метод доступа к частичной сумме?
 
P.S. Про то, что NSum не суммирует явно все члены даже конечного ряда, я в курсе.

Всего записей: 380 | Зарегистр. 07-09-2004 | Отправлено: 19:15 06-01-2019
alborzenko

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый день, помогите разобрать что делает следующий код:
 

Код:
 
ai0[tau_] :=
   Module
   [{z = tau},
      y = Find[fi[a, z], {a, a00}];
      z = a/.y; z];
 

 
Если кто сможет объяснить, могу компенсировать время сладким)

Всего записей: 1 | Зарегистр. 17-01-2019 | Отправлено: 20:32 17-01-2019 | Исправлено: alborzenko, 20:32 17-01-2019
Ognev

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

Цитата:
что делает следующий код

По синтаксису Wolfram 11.3 - ничего.

Всего записей: 380 | Зарегистр. 07-09-2004 | Отправлено: 10:31 20-01-2019
Ognev

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Чего-то не смог найти решения простой задачи.
Есть список вида:
{{x1,y1,f1},{x2,y2,f2},{x3,y3,f3},...},
нужно его переформатировать в вид:
{{{x1,y1},f1},{{x2,y2},f2},{{x3,y3},f3},...}
 
 Может кто подскажет решение?
 
UPD
 
Имелось в виду не циклом или Table-ом, а какой-нибудь встроенной функцией типа Partition.

Всего записей: 380 | Зарегистр. 07-09-2004 | Отправлено: 22:08 28-02-2019 | Исправлено: Ognev, 08:27 01-03-2019
Andrew10

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ognev
 
{{x1,y1,f1},{x2,y2,f2},{x3,y3,f3},...} /. {x_,y_,z_}->{{x,y},z}

Всего записей: 780 | Зарегистр. 26-02-2005 | Отправлено: 09:31 01-03-2019
Ognev

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Andrew10,
 
спасибо! Совсем забыл про волшебство ReplaceAll!

Всего записей: 380 | Зарегистр. 07-09-2004 | Отправлено: 13:35 01-03-2019
Ognev

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вдогонку первому вопросу. Не смог аккуратно победить замену пробелов во всех элементах списка, являющихся строковыми. Судя по выводимым ошибкам, использование StringReplace в шаблонах замены наталкивается на то, что Wolfram не уверена, что любой из экземпляров будет строкой или списком строк:
... String or list of strings expected at position 1 in StringReplace ...
 
Может кто подскажет способ преодоления? И нужно ли для этого точно знать, где именно будут строковые данные в списке или можно это реализовать для произвольного списка?

Всего записей: 380 | Зарегистр. 07-09-2004 | Отправлено: 21:36 01-03-2019
Andrew10

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ognev
 
Ваше описание задачи непонятно. Приведите конкретный пример списка, и что Вы хотите с ним сделать.  

Всего записей: 780 | Зарегистр. 26-02-2005 | Отправлено: 20:28 02-03-2019
Ognev

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Andrew10,
 
глобально, требуется из всех строковых элементов списка убрать все имеющиеся в них пробелы (условно: " "->"", например, "мама мыла раму" -> "мамамылараму").  
Вопрос был, можно ли это сделать для списка произвольной структуры? Который состоит не только из строк, но содержит и другие типы данных, например числовые.
Если нет, то пусть, например, список будет иметь такую структуру: {{x1, s1, s'1}, {x2, s2, s'2}, ...}, где строками являются лишь элементы s_i, s'_i?
 
UPD
 
На всякий случай, я использовал варианты типа:
{{x1, s1, s'1}, {x2, s2, s'2}, ...}/. s_ /; StringQ[s] -> StringReplace[s, " " -> ""]
Они срабатывают, но ошибка ... String or list of strings expected at position 1 in StringReplace ... выдается.

Всего записей: 380 | Зарегистр. 07-09-2004 | Отправлено: 13:57 03-03-2019 | Исправлено: Ognev, 14:42 03-03-2019
Andrew10

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ognev
 
Попробуйте так
 
{{x1, s1, s'1}, {x2, s2, s'2}, ...}/. s_ /; StringQ[s] :> StringReplace[s, " " -> ""]

Всего записей: 780 | Зарегистр. 26-02-2005 | Отправлено: 18:19 03-03-2019
Ognev

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Andrew10,
 
спасибо! С отложенным присваиванием ошибки не возникает.

Всего записей: 380 | Зарегистр. 07-09-2004 | Отправлено: 19:41 03-03-2019
Открыть новую тему     Написать ответ в эту тему

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

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


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

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.Board
© Ru.Board 2000-2020

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru