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

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



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GeorgeMame
Думаю, что лучше всего подходит:

Цитата:
PowersRepresentations[15^4, 5, 4]

И у вас будут все представления, не только то, что выше:

Цитата:
{{0, 0, 0, 0, 15}, {2, 2, 6, 12, 13}, {4, 6, 8, 9, 14}, {6, 6, 9, 12, 12}}

Иначе имеются Reduce и FindIstance, но они очень медленно работают поверх Integers.
 
 
Alex_B
Забыл совсем.
Надо иметь ввиду, что математика многослойная.
Сначала были языки более низкого уровня (C/C++, Java).
Сейчас уже сам язык Mathematica / Wolfram Language.
Переход начинался с 6-7 математики.
Когда то на рутрекере обсуждали 5 против 8.
Там было очень много регрессии, производительность иногда на порядок и больше ниже, а вот объем самой математики возрос очень быстро.

Всего записей: 1675 | Зарегистр. 14-03-2007 | Отправлено: 02:24 19-04-2020
GeorgeMame

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
karl_karlsson
Дело в том, что число членов на входе задачи неизвестно, т.е. мы не знаем, что оно равно пяти. Поэтому, когда я писал (4,1,14), то я имел в виду, что
15^4 = x1*1^4+x2*2^4+...+x14*14^4, где xi-ое равно нулю или единице.

Всего записей: 136 | Зарегистр. 24-07-2015 | Отправлено: 11:48 19-04-2020
karl_karlsson



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GeorgeMame
Ну это практически одно и то же.
Тогда, на месте:

Код:
PowersRepresentations[15^4, 5, 4]

будет:

Код:
PowersRepresentations[15^4, 14, 4]

 
Которое выдаст все:

Код:
{{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15}, {0, 0, 0, 0, 0, 0, 0, 0,
   0, 2, 2, 6, 12, 13}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 6, 8, 9,  
  14}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 9, 12, 12}, {0, 0, 0, 0, 0,  
  0, 0, 0, 5, 10, 10, 10, 10, 10}, {0, 0, 0, 0, 0, 0, 0, 2, 2, 4, 5,  
  6, 10, 14}, {0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 6, 10, 10, 13}, {0, 0, 0,
   0, 0, 2, 2, 7, 8, 8, 10, 10, 10, 10}, {0, 0, 0, 0, 2, 2, 2, 2, 4,  
  6, 7, 8, 8, 14}, {0, 0, 0, 0, 2, 2, 2, 2, 6, 6, 7, 8, 12, 12}, {0,  
  0, 0, 0, 2, 2, 2, 3, 6, 6, 6, 8, 8, 14}, {0, 0, 0, 0, 2, 2, 2, 4, 4,
   4, 4, 4, 12, 13}, {0, 0, 0, 0, 2, 2, 3, 4, 4, 10, 10, 10, 10,  
  10}, {0, 0, 0, 0, 2, 2, 4, 6, 8, 8, 8, 8, 8, 13}, {0, 0, 0, 0, 2, 4,
   4, 4, 4, 4, 4, 8, 9, 14}, {0, 0, 0, 0, 2, 4, 4, 4, 4, 4, 6, 9, 12,  
  12}, {0, 0, 0, 0, 2, 4, 4, 6, 6, 6, 6, 7, 8, 14}, {0, 0, 0, 0, 2, 4,
   6, 6, 6, 6, 6, 7, 12, 12}, {0, 0, 0, 0, 3, 4, 6, 6, 6, 6, 6, 6, 8,  
  14}, {0, 0, 0, 0, 3, 6, 6, 6, 6, 6, 6, 6, 12, 12}, {0, 0, 0, 0, 4,  
  4, 5, 6, 8, 8, 10, 10, 10, 10}, {0, 0, 0, 0, 4, 6, 6, 8, 8, 8, 8, 8,
   9, 12}, {0, 0, 0, 2, 2, 2, 2, 2, 4, 5, 8, 8, 12, 12}, {0, 0, 0, 2,  
  2, 2, 2, 3, 4, 4, 4, 6, 10, 14}, {0, 0, 0, 2, 2, 2, 2, 6, 6, 6, 6,  
  10, 11, 12}, {0, 0, 0, 2, 2, 4, 4, 4, 5, 6, 6, 8, 8, 14}, {0, 0, 0,  
  2, 2, 4, 4, 5, 6, 6, 6, 8, 12, 12}, {0, 0, 0, 2, 4, 4, 4, 4, 8, 8,  
  8, 9, 10, 12}, {0, 0, 0, 2, 6, 6, 6, 6, 7, 8, 8, 8, 10, 12}, {0, 0,  
  0, 4, 4, 4, 4, 4, 6, 6, 8, 8, 10, 13}, {0, 0, 0, 6, 8, 8, 8, 8, 8,  
  8, 8, 8, 9, 10}, {0, 0, 2, 2, 2, 2, 3, 4, 6, 8, 8, 10, 10, 12}, {0,  
  0, 2, 2, 2, 4, 4, 4, 4, 4, 4, 5, 10, 14}, {0, 0, 2, 2, 4, 4, 4, 6,  
  6, 7, 8, 10, 10, 12}, {0, 0, 2, 2, 4, 5, 6, 6, 8, 8, 8, 8, 10,  
  12}, {0, 0, 2, 3, 4, 4, 6, 6, 6, 6, 8, 10, 10, 12}, {0, 0, 2, 4, 4,  
  4, 4, 4, 4, 4, 4, 10, 10, 13}, {0, 0, 2, 6, 6, 6, 6, 6, 6, 8, 8, 10,
   10, 11}, {0, 2, 2, 2, 2, 2, 4, 4, 6, 8, 10, 10, 10, 11}, {0, 2, 2,  
  2, 2, 3, 8, 8, 8, 8, 8, 10, 10, 10}, {0, 2, 2, 2, 4, 4, 4, 4, 5, 8,  
  8, 10, 10, 12}, {0, 2, 2, 4, 4, 4, 6, 6, 6, 6, 10, 10, 10, 11}, {0,  
  2, 2, 4, 4, 6, 7, 8, 8, 8, 8, 10, 10, 10}, {0, 2, 2, 5, 6, 8, 8, 8,  
  8, 8, 8, 8, 10, 10}, {0, 2, 3, 4, 6, 6, 6, 8, 8, 8, 8, 10, 10,  
  10}, {0, 4, 4, 4, 4, 4, 5, 6, 6, 6, 8, 10, 10, 12}, {1, 2, 2, 2, 6,  
  6, 6, 6, 6, 8, 10, 10, 10, 10}, {1, 4, 6, 6, 6, 6, 6, 6, 6, 6, 10,  
  10, 10, 10}, {2, 2, 3, 4, 4, 4, 4, 6, 8, 8, 10, 10, 10, 10}, {4, 4,  
  4, 4, 4, 4, 6, 6, 7, 8, 10, 10, 10, 10}, {4, 4, 4, 4, 5, 6, 6, 8, 8,
   8, 8, 10, 10, 10}}

 
Коэффициенты равны 1 либо 0 только:

Код:
{0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 6, 8, 9, 14}

Всего записей: 1675 | Зарегистр. 14-03-2007 | Отправлено: 16:13 19-04-2020 | Исправлено: karl_karlsson, 16:13 19-04-2020
GeorgeMame

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
karl_karlsson
 
Тогда время счета многократно возрастает.
Сколько лет тогда будет считаться последний результат из https://oeis.org/A030052/a030052.txt  
104^15 = Total[{2, 4, 6, 8, 10, 11, 15, 16, 20, 22, 23, 24, 26, 29, 32, 33, 35,
       39, 44, 47, 48, 49, 50, 54, 57, 62, 63, 65, 68, 70, 72, 75, 76, 77, 78,
       79, 80, 81, 83, 84, 85, 86, 87, 88, 95, 96}^15], т.е.(104^15,103,15), который посчитан Wolfram Mathematica.  

Всего записей: 136 | Зарегистр. 24-07-2015 | Отправлено: 19:32 19-04-2020 | Исправлено: GeorgeMame, 19:41 19-04-2020
Mavrikii

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

Цитата:
Как я понял, необходимо использовать LatticeReduce[]. В лоб у меня не получилось.


Код:
nBase = 15;
nOrder = 4;
nAs = Reverse[Table[n^nOrder, {n, nBase}]*10^8];
nAi = Table[If[j != nBase, KroneckerDelta[i, j], -nAs[[i]]], {i, nBase - 1}, {j, nBase}];
nB = LatticeReduce[nAi]

Ответ

Цитата:
{
{1, 0, -2, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0},
{0, 0, -1, 1, 0, 1, 0, -1, 0, 1, 1, 0, 0, 0, 0},
{0, 1, -1, -1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0},
{0, 0, 1, -2, 1, 0, 0, 0, -1, 1, -1, 0, 0, 0, 0},
{-1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0},
{1, -1, 0, 0, 0, -1, -1, 1, 0, 0, 0, 1, 0, 0, 0},
{0, -1, 1, 0, 1, 0, 0, -1, 0, 0, -1, 0, -1, 1, 0},  
{0, 0, 0, 0, -1, 1, 0, 1, 1, -1, -1, 0, 1, -1, 0},
{1, -1, -1, 1, 0, 0, 0, -1, 0, 0, -1, 1, 1, 0, 0},
{-1, 1, 1, 0, -1, 0, 0, -1, 1, 0, 0, 0, 0, -1, 0},
{0, 0, 0, -1, 1, 0, 1, 0, 0, 0, -1, 1, -1, -1, 0},
{0, 0, 1, 0, -2, -1, 2, 0, -1, 0, 0, 0, 0, 0, 0},
{0, 2, -2, 1, -1, 0, -3, 1, -3, 0, -4, -1, -3, -1, 0},
{0, -1, 1, 0, 1, 0, -1, 0, 1, 0, -1, 0, 0, 0, -100000000}
}

умножение на большое число необходимо
https://mathworld.wolfram.com/LatticeReduction.html

Цитата:
multiplied by a large positive constant w to penalize vectors that do not sum to zero

 
последнее представление не подходит

Код:
nB.Reverse[Range[1, nBase]^nOrder]


Цитата:
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -99999999}

 
отфильтровать можно как то так (а может и проще)

Код:
Cases[nB, r_ /; r[[1]] == -1 && (Count[r[[2 ;;]], 0] + Count[r[[2 ;;]], 1] + 1) == Length[r]]

 
ps: это только пример, возможно с ошибкой, ибо результат для 104 не выдает, а разбираться мне сейчас лень.

Всего записей: 11348 | Зарегистр. 20-09-2014 | Отправлено: 07:39 20-04-2020 | Исправлено: Mavrikii, 09:14 20-04-2020
GeorgeMame

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
 
Спасибо. Многое прояснилось, но не до конца. Например, для 25^6 = 1^6 + 2^6 + 3^6 + 5^6 + 6^6 + 7^6 + 8^6 + 9^6 + 10^6 + 12^6 + 13^6 + 15^6 + 16^6 + 17^6 + 18^6 + 23^6 я так и не сумел подобрать множитель w для получения правильного ответа.

Всего записей: 136 | Зарегистр. 24-07-2015 | Отправлено: 10:11 20-04-2020 | Исправлено: GeorgeMame, 11:18 20-04-2020
karl_karlsson



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

Код:
{i, nBase}, {j, nBase+1}

Потом ответ должен быть типа:

Код:
{..., -1, 0}

К тому же еще все на место "..." должны быть только 0 и 1.
 
GeorgeMame
Конечно, что время возрастает.
PowersRepresentations считает только до 12^5 следующего за 15^4.
 
Но я вот недосмотрел.
Оказывается, что Reduce считает до 25^6
 

Код:
n = 25;
k = 6;
Reduce[\!\(
\*SubsuperscriptBox[\(\[Sum]\), \(i = 1\), \(n - 1\)]\(
\*SuperscriptBox[\(i\), \(k\)]  
\*SubscriptBox[\(x\), \(i\)]\)\) == n^k &&  
  Apply[And, Table[0 <= Subscript[x, i] <= 1, {i, n - 1}]],  
 Table[Subscript[x, i], {i, n - 1}], Integers]

 
А вот FindInstance еще находит 40^7
Время тут уже порядка 10 минут
 

Код:
n = 40;
k = 7;
FindInstance[\!\(
\*SubsuperscriptBox[\(\[Sum]\), \(i = 1\), \(n - 1\)]\(
\*SuperscriptBox[\(i\), \(k\)]  
\*SubscriptBox[\(x\), \(i\)]\)\) == n^k &&  
   Apply[And, Table[0 <= Subscript[x, i] <= 1, {i, n - 1}]],  
  Table[Subscript[x, i], {i, n - 1}], Integers]

 
Добавлено:
Снова вот пропустил:
 

Цитата:
Потом ответ должен быть типа:

Код:
{..., -1, 0}

К тому же еще все на место "..." должны быть только 0 и 1.

Либо наоборот, места -1 и 1 меняются.
 
 
Добавлено:
Вот снова не так.

Код:
{-1,...,0}

на место "..." должны быть только 0 и 1.
Либо меняем места 1 и -1.
 
Это потому что у меня нету Reverse.

Всего записей: 1675 | Зарегистр. 14-03-2007 | Отправлено: 17:27 20-04-2020
GeorgeMame

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
karl_karlsson
 
Спасибо. 40^7 на моем компе считался 6 минут (12-ядерный проц. i9-9920X, 128 гигов памяти+SSD M.2 PCI-E). Получил только один ответ (как я понял, из-за условия 0 <= Subscript[x, i] <= 1), но правильный, состоящий только из нулей и единиц (диспетчер задач показал, что практически весь счет полностью распараллеливался на всех ядрах). Но дело в том, что моему балбесу (сейчас дома сидит и получает задания по интернету. Физику и матан я ему помогаю решать, а вот с Wolfram Mathematica раньше не сталкивался - поставил последнюю версию на свой комп. несколько дней назад) преподаватель задал решить задачу с помощью Lattice Reduction. Не совсем понял, как надо изменить в конечном счете код Mavrikii'а.
 

Всего записей: 136 | Зарегистр. 24-07-2015 | Отправлено: 19:26 20-04-2020
Mavrikii

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

Цитата:
Должно быть  

делал по примерам из мануала. матрица получается правильной (кроме последней строки, но ее в примерах игнорируют)
   
 
GeorgeMame

Цитата:
как надо изменить в конечном счете код Mavrikii

вполне возможно, что нужно рассматривать все вариации и каждого члена суммы, так как и их, в свою очередь, можно представить в виде аналогичной суммы, элементы которой могут перекрываться с первоначальной. пока нет времени с этим повозиться.

Всего записей: 11348 | Зарегистр. 20-09-2014 | Отправлено: 20:49 20-04-2020 | Исправлено: Mavrikii, 20:50 20-04-2020
karl_karlsson



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Это понятно, но кроме этой строки отсутствует еще одна строка.
Что означает a_0 либо a_n, либо 1^nOrder.
 
Ну вот на примере по проще и нагляднее.
Как должно быть:

Код:
nBase = 6;
nOrder = 3;
nAs = Reverse[Table[10*(n^nOrder), {n, nBase}]];
nAi = Table[If[j != nBase + 1, KroneckerDelta[i, j], -nAs[[i]]], {i, nBase}, {j, nBase + 1}]
nB = LatticeReduce[nAi]

 

Код:
{{1, 0, 0, 0, 0, 0, -2160},  
{0, 1, 0, 0, 0, 0, -1250},  
{0, 0, 1, 0, 0, 0, -640},  
{0, 0, 0, 1, 0, 0, -270},  
{0, 0, 0, 0, 1, 0, -80},  
{0, 0, 0, 0, 0, 1, -10}}

 
6, 5, 4, 3, 2, 1, сумма

Код:
{{-1, 1, 1, 1, 0, 0, 0},  
{0, 1, -1, -2, -1, 1, 0},  
{0, 0, -1, 2, 1, 2, 0},  
{0, 0, -1, 3, -2, -1, 0},  
{0, -2, 4, 0, -1, 2, 0},  
{0, 0, 0, 0,  0, -1, 10}}



 
А вот как есть:

Код:
nBase = 6;
nOrder = 3;
nAs = Reverse[Table[10*(n^nOrder), {n, nBase}]];
nAi = Table[If[j != nBase, KroneckerDelta[i, j], -nAs[[i]]], {i, nBase - 1}, {j, nBase}]
nB = LatticeReduce[nAi]

 

Код:
{{1, 0, 0, 0, 0, -2160},  
{0, 1, 0, 0, 0, -1250},  
{0, 0, 1, 0, 0, -640},  
{0, 0, 0, 1, 0, -270},  
{0, 0, 0, 0, 1, -80}}

 
6, 5, 4, 3, 2, сумма

Код:
{{-1, 1, 1, 1, 0, 0},  
{0, 1, -2, 1, -3, 0},  
{1, -3, 0, 5, 3,  0},  
{0, -1, 3, -1, -5, 0},  
{0, 1, -1, -2, -1, 10}}

 
Они совпадают, потому что 6^3 не содержит 1^3.
Это и дальше так идет.
Но вот уже 25^6 содержит 1^6, но его нет, потому что все начинается с 2.

Всего записей: 1675 | Зарегистр. 14-03-2007 | Отправлено: 23:55 20-04-2020
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
karl_karlsson
Ок, спасибо.. Я вчера видел, что чего то не хватает, но уже устал к тому времени.
 
Но, на самом деле, можно и без нее.  
Так как сумму я записывал именно через an, что и было 6^3, но со знаком -1 (либо первый 1, а остальные -1).
то есть рассматривал -6^3 + 5^3 + 4^3 + 3^3 = 0
Поэтому и фильтрацию вел по первому элементу строки (как требует постановка задачи).
Разница лишь в том, что последний элемент нужно было делить на используемый ранее множитель.
Правда это уже не так прямолинейно )
 
Типа такого

Код:
nBase = 3;
nOrder = 1;
nAs = Reverse[Table[n^nOrder*10, {n, nBase}]];
nAi = Table[If[j != nBase, KroneckerDelta[i, j], -nAs[[i]]], {i, nBase - 1}, {j, nBase}];
nB = LatticeReduce[nAi];
nB[[All, -1]] /= 10;

 
Но для тех же 25^6 и выше, оно, вроде бы, не находит нужное (оба варианта), либо я в чем то ошибаюсь.
То есть проблема возникает аналогичная
Цитата:
Оказывается, что Reduce считает до 25^6

Всего записей: 11348 | Зарегистр. 20-09-2014 | Отправлено: 02:40 21-04-2020 | Исправлено: Mavrikii, 03:03 21-04-2020
GeorgeMame

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
karl_karlsson
 
А если увеличить точность расчета? Wolfram Mathematica пишет, что надо умножать на большой w: как я понимаю, для больших задач и w должна быть больше и соответственно, точность расчета должна быть нехилая, во всяком случае больше стандартной.

Всего записей: 136 | Зарегистр. 24-07-2015 | Отправлено: 12:08 21-04-2020 | Исправлено: GeorgeMame, 12:13 21-04-2020
GeorgeMame

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Кажется, я понял, почему берется w большое: это из-за работы с вещественными числами - нивелируется ошибка, связанная с дробной частью, т.е. для целых чисел вроде бы этого делать не надо. И почему нет нужного решения для 25^6 тоже вроде бы понял: находятся только часть решений, равная числу членов. Как же тогда Вольфрамом они находили решение для 104^15?

Всего записей: 136 | Зарегистр. 24-07-2015 | Отправлено: 21:58 21-04-2020 | Исправлено: GeorgeMame, 22:03 21-04-2020
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GeorgeMame
если бы это все было просто - не было бы нужды в сайтах с информацией, что вы приводили.
https://mathworld.wolfram.com/DiophantineEquation.html
 
в принципе, не вдаваясь в подробности, наверно можно просто тупо сделать перебором.
понятно, что тоже займет время. ну и чтобы памяти хватило ) хотя насчет памяти - можно просто разбивать на блоки.
 
к примеру

Код:
nBase = 25;
nOrder = 6;
nInts = Range[1, nBase - 1];
nTuples = Tuples[{0, 1}, nBase - 1];
nTuples[[Position[nTuples.nInts^nOrder, nBase^nOrder][[1, 1]]]]


Цитата:
{1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0}

 
или так

Код:
nBase = 25;
nOrder = 6;
nSum = nBase^nOrder;
nIntsPower = Reverse[Range[1, nBase - 1]^nOrder];
ParallelDo[
  bits = IntegerDigits[nInt, 2, nBase - 1];
  If[bits.nIntsPower == nSum, Print[bits]];
  , {nInt, 2^(nBase - 1) - 1}, "Method" -> "CoarsestGrained"];

 
что, в принципе, то же самое, что было написано несколькими постами выше )

Всего записей: 11348 | Зарегистр. 20-09-2014 | Отправлено: 22:40 21-04-2020 | Исправлено: Mavrikii, 00:16 22-04-2020
GeorgeMame

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
 
Спасибо. Мне Wolfram Mathematica определенно начинает нравиться. Не посоветуете толковую литературу (можно на английском)?
 
P.S.
Ваш параллельный код на моем компе через 4 минуты нашел решение для 40^7 и я снял задачу.

Всего записей: 136 | Зарегистр. 24-07-2015 | Отправлено: 01:10 22-04-2020 | Исправлено: GeorgeMame, 01:35 22-04-2020
Mavrikii

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

Цитата:
Не посоветуете толковую литературу (можно на английском)?

по math пакетам (Matlab, mathematica, mathcad, mapl и тп)
а что именно - не знаю, мне всегда хватает документации к языку.
 

Цитата:
нашел решение для

еще неплохо бы останавливать все потоки после нахождения ) это уже не стал добавлять.
 
и скорость нахождения тут, по сути, как везение - зависит от количества ядер, разбиения на блоки и нахождения ответа в блоке.

Всего записей: 11348 | Зарегистр. 20-09-2014 | Отправлено: 02:00 22-04-2020 | Исправлено: Mavrikii, 02:08 22-04-2020
karl_karlsson



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
То же самое, получается.
Попробовал разные значения как большого числа, также еще и параметр алгоритма.
 
GeorgeMame
Большое число не так много меняет результаты.
Точность задает уже не оно, но внутренний параметр.
Он виден вот отсюда:

Код:
SystemOptions["LatticeReduceOptions"]

Задается примерно вот так:

Код:
SetSystemOptions["LatticeReduceOptions" -> "LatticeReduceRatioParameter" -> 0.75];

Стандартное значение Automatic обычно 0,75 - 0,80.
Возможные значения начинаются с 0,25 и вот доходят до 1.
Только 1 уже бесконечно медленно.
На примерах выше возможные значения доходят где-то до ~1-10^-35
 
Насчет параллельного алгоритма  

Код:
General::nomem: The current computation was aborted because there was insufficient memory available to complete the computation.

Это у меня на 40 ГБ свободных сейчас.
В смысле, что каждый алгоритм что-то требует.
И вот Mathematica в плане памяти насчет больших данных очень плохо подходит.
Тут Matlab в разы лучше.
Хотя дальше будет какой-то рост похоже на экспоненциального.
 
В варезнике когда-то выложил, ссылки уже нерабочие, но названия имеются:
The Mathematica GuideBooks
Книги о Wolfram Mathematica (715 МБ)
 
Либо вот так, смотрите названия тут:
wolfram.com/books
 
Потом качаете отсюда например:
b-ok.cc
 
Добавлено:
Еще вот такое.
https://oeis.org/A030052

Цитата:
a(11) from Al Zimmermann, Apr 07 2004
a(12) from Al Zimmermann, Apr 13 2004

 
У автора 11 и 12 какой то конкурс:
Sums of Powers
 
Еще я думаю, что 13, 14 и 15 не в математике вычисляли:
Кажется, кто-то их ввел не туда куда надо.
Похоже ответ представлен в синтаксисе Mathematica, но ввели его в поле вычислительного кода.
Хотя это никакой не вычислительный код.

Всего записей: 1675 | Зарегистр. 14-03-2007 | Отправлено: 03:17 22-04-2020
Mavrikii

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

Цитата:
Это у меня на 40 ГБ свободных сейчас.

с туплями да (там не параллельный), а вот с paralleldo (второй кусок кода) проблем с памятью быть не должно вообще.

Всего записей: 11348 | Зарегистр. 20-09-2014 | Отправлено: 04:57 22-04-2020
karl_karlsson



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Недосмотрел, все верно.
Оказывается производительность похожа на FindInstance.
Скачок времени с 25^6 по 40^7 где-то примерно на 4 порядков.

Всего записей: 1675 | Зарегистр. 14-03-2007 | Отправлено: 10:40 22-04-2020
GeorgeMame

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
karl_karlsson
 
Спасибо. Вы мне очень помогли.

Всего записей: 136 | Зарегистр. 24-07-2015 | Отправлено: 16:37 22-04-2020
Открыть новую тему     Написать ответ в эту тему

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