2014 dxdy logo

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

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




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


15/12/15
48
Здравствуйте.

В 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 
Аватара пользователя


11/06/12
10390
стихия.вздох.мюсли
Ну вы же в курсе, что существует такая вещь, как телевизор, и по этому телевизору показывают сериалы как в WL задаются опции? Вот и TimeConstraint — обыкновенная опция. Simplify[expr, TimeConstraint -> n] и все дела. Иное дело, если это не работает...

 Профиль  
                  
 
 Re: как увеличить величину TimeConstraint в Wolfram Mathematica
Сообщение24.06.2018, 19:18 
Заслуженный участник


27/04/09
28128
Да, опции указываются как дополнительные (и обязательно последние) аргументы к команде и имеют вид название -> значение.

 Профиль  
                  
 
 Re: как увеличить величину TimeConstraint в Wolfram Mathematica
Сообщение24.06.2018, 19:24 


15/12/15
48
Спасибо. :-)

 Профиль  
                  
 
 Re: как увеличить величину TimeConstraint в Wolfram Mathematica
Сообщение24.06.2018, 19:26 
Аватара пользователя


11/06/12
10390
стихия.вздох.мюсли
IrinaZub, если вы только приступаете к изучению WL, не стесняйтесь задавать вопросы ;-)

 Профиль  
                  
 
 Re: как увеличить величину TimeConstraint в Wolfram Mathematica
Сообщение28.06.2018, 19:11 


15/12/15
48
Aritaborian в сообщении #1322352 писал(а):
IrinaZub, если вы только приступаете к изучению WL, не стесняйтесь задавать вопросы ;-)

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

 Профиль  
                  
 
 Re: как увеличить величину TimeConstraint в Wolfram Mathematica
Сообщение29.06.2018, 13:30 


15/12/15
48
Добрый день.

Можно еще спросить? Я использовала команду 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 
Аватара пользователя


11/06/12
10390
стихия.вздох.мюсли
IrinaZub, во-первых, оформляйте, пожалуйста, код тегами [tt] или [code], так его зрительно легче воспринимать.
Во-вторых. Может, приведёте задачу (точнее, этот её кусок) полностью?

 Профиль  
                  
 
 Re: как увеличить величину TimeConstraint в Wolfram Mathematica
Сообщение29.06.2018, 15:50 


15/12/15
48
Хорошо, сейчас попробую.
Код:
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 
Аватара пользователя


11/06/12
10390
стихия.вздох.мюсли
Ага! Я не вчитывался досконально, но одну вещь подметил сразу. Вы зачем-то используете отложенное присваивание, когда, на мой взгляд, достаточно обычного. Попробуйте заменить все := на обыкновенное =.

 Профиль  
                  
 
 Re: как увеличить величину TimeConstraint в Wolfram Mathematica
Сообщение29.06.2018, 16:00 


15/12/15
48
Хорошо, сейчас попробую.

-- 29.06.2018, 17:22 --

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

 Профиль  
                  
 
 Re: как увеличить величину TimeConstraint в Wolfram Mathematica
Сообщение29.06.2018, 17:23 
Заслуженный участник


27/04/09
28128
Если и FullSimplify ничего не даст, стоит перед продолжением поиска как-то упростить саму задачу. Несмотря на то, что независимых переменных всего три, никто и не гарантировал, что появившееся выражение упрощаемо во что-то маленькое и обозримое.

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

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

 Профиль  
                  
 
 Re: как увеличить величину TimeConstraint в Wolfram Mathematica
Сообщение29.06.2018, 18:07 


11/07/16
825
Следуя совету arseniiv (обычное присваивание вместо отложенного), получил результат на моем компе с процессором DualCore E5700 за 237.831 с. Выполненный код через Dropbox по требованию.

 Профиль  
                  
 
 Re: как увеличить величину TimeConstraint в Wolfram Mathematica
Сообщение29.06.2018, 18:22 
Заслуженный участник


27/04/09
28128
Чему получается равно LeafCount[s]? Вдруг там особо и не упростилось. Для неупрощённого это 9852.

 Профиль  
                  
 
 Re: как увеличить величину TimeConstraint в Wolfram Mathematica
Сообщение29.06.2018, 18:45 


11/07/16
825
arseniiv
Код:
LeafCount[%]
6554

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 24 ]  На страницу 1, 2  След.

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group