2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




На страницу 1, 2  След.
 
 как увеличить величину TimeConstraint в Wolfram Mathematica
Сообщение24.06.2018, 18:56 
Здравствуйте.

В Wolfram Mathematica 9.0 при подсчете вышла ошибка: "Simplify::time: Time spent on a transformation exceeded 300.` seconds, and the transformation was aborted. Increasing the value of TimeConstraint option may improve the result of simplification".

Подскажите, пожалуйста, как от нее избавиться.
Я так поняла, что надо увеличить величину опции TimeConstraint, но не знаю, как это сделать.

 
 
 
 Re: как увеличить величину TimeConstraint в Wolfram Mathematica
Сообщение24.06.2018, 19:17 
Аватара пользователя
Ну вы же в курсе, что существует такая вещь, как телевизор, и по этому телевизору показывают сериалы как в WL задаются опции? Вот и TimeConstraint — обыкновенная опция. Simplify[expr, TimeConstraint -> n] и все дела. Иное дело, если это не работает...

 
 
 
 Re: как увеличить величину TimeConstraint в Wolfram Mathematica
Сообщение24.06.2018, 19:18 
Да, опции указываются как дополнительные (и обязательно последние) аргументы к команде и имеют вид название -> значение.

 
 
 
 Re: как увеличить величину TimeConstraint в Wolfram Mathematica
Сообщение24.06.2018, 19:24 
Спасибо. :-)

 
 
 
 Re: как увеличить величину TimeConstraint в Wolfram Mathematica
Сообщение24.06.2018, 19:26 
Аватара пользователя
IrinaZub, если вы только приступаете к изучению WL, не стесняйтесь задавать вопросы ;-)

 
 
 
 Re: как увеличить величину TimeConstraint в Wolfram Mathematica
Сообщение28.06.2018, 19:11 
Aritaborian в сообщении #1322352 писал(а):
IrinaZub, если вы только приступаете к изучению WL, не стесняйтесь задавать вопросы ;-)

Cпасибо.:) Да, я только начинаю изучать эту программу.

 
 
 
 Re: как увеличить величину TimeConstraint в Wolfram Mathematica
Сообщение29.06.2018, 13:30 
Добрый день.

Можно еще спросить? Я использовала команду Simplify[s, TimeConstraint -> 3000], но опять ошибка: "Simplify::time: Time spent on a transformation exceeded 3000.` seconds, and the transformation was aborted. Increasing the value of TimeConstraint option may improve the result of simplification".

Я не могу понять, почему WL так долго считает, и подсчитать не может сумму четырех произведений тригонометрических функций.
Или это нормальная ситуация и нужно дальше увеличивать TimeConstraint?

 
 
 
 Re: как увеличить величину TimeConstraint в Wolfram Mathematica
Сообщение29.06.2018, 14:46 
Аватара пользователя
IrinaZub, во-первых, оформляйте, пожалуйста, код тегами [tt] или [code], так его зрительно легче воспринимать.
Во-вторых. Может, приведёте задачу (точнее, этот её кусок) полностью?

 
 
 
 Re: как увеличить величину TimeConstraint в Wolfram Mathematica
Сообщение29.06.2018, 15:50 
Хорошо, сейчас попробую.
Код:
b := Sqrt[b1^2 + b2^2 + b3^2]
z1 := Sqrt[(b^2 + 1 - Sqrt[(b^2 + 1)^2 - 4*b1^2])/2]
z2 := Sqrt[(b^2 + 1 + Sqrt[(b^2 + 1)^2 - 4*b1^2])/2]
c0 := (z2*Sin[z1*t] - z1*Sin[z2*t])/(z1*z2*(z2^2 - z1^2))
c1 := (Cos[z1*t] - Cos[z2*t])/(z2^2 - z1^2)
c2 := (z2^3*Sin[z1*t] - z1^3*Sin[z2*t])/(z1*z2*(z2^2 - z1^2))
c3 := (z2^2*Cos[z1*t] - z1^2*Cos[z2*t])/(z2^2 - z1^2)
r1 := -(z1^2*z2^2)*c0 - (z2*Sin[z2*t] - z1*Sin[z1*t])/(z2^2 - z1^2)
r2 := с3 - (1 + b2^2 + b3^2)*с1
r3 := b1*b2*с1 + b3*(z2*Sin[z2*t] - z1*Sin[z1*t])/(z2^2 - z1^2)
r4 := b1*b3*с1 - b2*(z2*Sin[z2*t] - z1*Sin[z1*t])/(z2^2 - z1^2)
y1 := b1^2*(1 - Cos[b*t]) (c0 - c2)/b^2 - (b2^2 + b3^2)*Sin[b*t]*
   c1/b + Cos[b*t]*((1 + b2^2 + b3^2)*c0 - c2)
y2 := b1^2*(c3 - c1)*(1 - Cos[b*t])/b^2 + (b2^2 + b3^2)*
   Sin[b*t]*(c2 - (1 + b^2)*c0)/b + (c3 - (1 + b2^2 + b3^2)*c1)*Cos[b*t]
y3 := -b1^2*b3*c0*(1 - Cos[b*t])/b^2 +
  Sin[b*t]*(b3*b^2*c1 - b3*c3 + b1*b2*b^2*c0 - b1*b2*c2)/b +
  Cos[b*t]*(b1*b2*c1 + b3*c2 - b3*(1 + b^2)*c0)
y4 := (b1^2*b2*c0 + b1*b3*(b1^2 + b2^2)*c1)*(1 - Cos[b*t])/
    b^2 + (b1*b3*b^2*c0 - b2*b^2*c1 - b1*b2*c2 + b2*c3)*
   Sin[b*t]/b + (b2*(1 + b^2)*c0 + b1*b3*c1 - b2*c2)*Cos[b*t]
s := r1*y1 + r2*y2 + r3*y3 + r4*y4
Simplify[s, TimeConstraint -> 3000]

Так нормально?

 
 
 
 Re: как увеличить величину TimeConstraint в Wolfram Mathematica
Сообщение29.06.2018, 15:56 
Аватара пользователя
Ага! Я не вчитывался досконально, но одну вещь подметил сразу. Вы зачем-то используете отложенное присваивание, когда, на мой взгляд, достаточно обычного. Попробуйте заменить все := на обыкновенное =.

 
 
 
 Re: как увеличить величину TimeConstraint в Wolfram Mathematica
Сообщение29.06.2018, 16:00 
Хорошо, сейчас попробую.

-- 29.06.2018, 17:22 --

Увы, не считает. Наверно, надо какую-то другую команду задать для упрощения выражения.

 
 
 
 Re: как увеличить величину TimeConstraint в Wolfram Mathematica
Сообщение29.06.2018, 17:23 
Если и FullSimplify ничего не даст, стоит перед продолжением поиска как-то упростить саму задачу. Несмотря на то, что независимых переменных всего три, никто и не гарантировал, что появившееся выражение упрощаемо во что-то маленькое и обозримое.

-- Пт июн 29, 2018 19:27:54 --

Или, скажем, если s упрощается, чтобы потом по такой формуле считать что-то некоторой программой (включая саму WM), не обязательно для этого сначала кидать всё в кучу, можно упрощать отдельные шаги вычисления по-отдельности.

 
 
 
 Re: как увеличить величину TimeConstraint в Wolfram Mathematica
Сообщение29.06.2018, 18:07 
Следуя совету arseniiv (обычное присваивание вместо отложенного), получил результат на моем компе с процессором DualCore E5700 за 237.831 с. Выполненный код через Dropbox по требованию.

 
 
 
 Re: как увеличить величину TimeConstraint в Wolfram Mathematica
Сообщение29.06.2018, 18:22 
Чему получается равно LeafCount[s]? Вдруг там особо и не упростилось. Для неупрощённого это 9852.

 
 
 
 Re: как увеличить величину TimeConstraint в Wolfram Mathematica
Сообщение29.06.2018, 18:45 
arseniiv
Код:
LeafCount[%]
6554

 
 
 [ Сообщений: 24 ]  На страницу 1, 2  След.


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group