2014 dxdy logo

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

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




Начать новую тему Ответить на тему На страницу 1, 2  След.
 
 Проблема с решением сист. триг-ких. ур-ний в Mathematica
Сообщение20.06.2012, 22:52 


18/12/10
22
Здравствуйте,

В Mathematica 8 пытаюсь решить систему тригонометрических уравнений в символьном виде для задачи связанной с поворотами систем координат. Система получается довольно громоздкая, но все искомые параметры находятся только под тригонометрическими функциями, то есть аналитическое решение, по идее, есть.
После запука решателя математика задумывается и примерно 2 дня оперирует процессором и оперативной памятью, потом процессор больше не загружает, но с памятью продолжает работать.
В связи с этим у меня 4 вопроса:
1. То что математика перестает пользоваться процессором, означает, что ждать больше нечего и можно прерывать вычисление или еще можно надеятся на получение результата?
2. Можно ли ускорить процесс, если воспользоваться перед решением командой TrigExpand, поскольку в выражениях много тригонометрических функций от суммы углов, правда после TrigExpand'a каждое уравнение становится такого размера, что устаешь прокручивать.
3. Можно ли как-то ускорить расчет, подключить к расчетам дополнительные ядра, подключить CUDA?
4. Может Maple лучше справляется с такими системами?

Очень надеюсь на помощь.
Заранее спасибо.

 Профиль  
                  
 
 Re: Проблема с решением сист. триг-ких. ур-ний в Mathematica
Сообщение20.06.2012, 23:05 
Аватара пользователя


11/06/12
10390
стихия.вздох.мюсли
Два дня думает?! Заратустра, приведите условие задачи, мне уже просто посмотреть на такое хочется ;-)
На вопросы:
1) А использование памяти при этом увеличивается?
2) помогло бы, я думаю. Только этот ТригЕкспанд тоже нужно с умом применять а не абы как;
3) ядра можно, включив при этом Parallelize. CUDA же в Математике, AFAIK, годится лишь для графических штук;
4) не думаю.

 Профиль  
                  
 
 Re: Проблема с решением сист. триг-ких. ур-ний в Mathematica
Сообщение20.06.2012, 23:47 


18/12/10
22
Печатать эти формулы очень уж долго, поэтому привожу картинкой, надеюсь это не запрещено.
Изображение
1) колеблется от 5,5 до 6,5 Гб.
2) а можно поподробнее, куда ум прикладывать?
3) подскажите, как правильно сделать, вроде включено, ядра определились, а загрузка все равно на одно ядро.

 Профиль  
                  
 
 Re: Проблема с решением сист. триг-ких. ур-ний в Mathematica
Сообщение21.06.2012, 00:02 
Аватара пользователя


11/06/12
10390
стихия.вздох.мюсли
Заратустра, я ни фига не понял вы тут привели не вашу исходную задачу, а некий этап её решения. Что означают
Код:
Mzyx
и
Код:
Mmlk
? Где в них ваши синусы, косинусы и повороты?
О параллелизации же…

(Оффтоп)

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

 Профиль  
                  
 
 Re: Проблема с решением сист. триг-ких. ур-ний в Mathematica
Сообщение21.06.2012, 09:07 
Заслуженный участник


25/02/11
1797
Для формул есть команда TeXForm. А такую здоровую систему вряд ли математика решит символьно. Просто потому, что решение скорее всего не может быть выражено через элементарные функции. Там вагон параметров. Все они предполагаются комплексными. Даже если взять алгебраическую систему из трех уравнений с тремя неизвестными, каждое второй степени, да с произвольными коэффициентами, решение вряд ли получится выписать.

 Профиль  
                  
 
 Re: Проблема с решением сист. триг-ких. ур-ний в Mathematica
Сообщение21.06.2012, 09:52 


18/12/10
22
Aritaborian в сообщении #587443 писал(а):
Заратустра, я ни фига не понял вы тут привели не вашу исходную задачу, а некий этап её решения. Что означают
Код:
Mzyx
и
Код:
Mmlk
? Где в них ваши синусы, косинусы и повороты?

это действительно не исходная задача, но это ее этап, его можно рассматривать отдельно.
Vince Diesel в сообщении #587504 писал(а):
Там вагон параметров. Все они предполагаются комплексными.

На счет комплексных параметров, прописывание:
Код:
Element[{\[Gamma], \[Theta], \[Psi], \[CapitalDelta]\[Gamma], \
\[CapitalDelta]\[Theta], \[CapitalDelta]\[Psi], kx, ky, kz, lx, ly,
  lz, mx, my, mz}, Reals]

достаточно для того, чтобы Математика считала переменные некомплексными? Ускорит ли это процесс?

 Профиль  
                  
 
 Re: Проблема с решением сист. триг-ких. ур-ний в Mathematica
Сообщение21.06.2012, 10:04 
Заслуженный участник


25/02/11
1797
Zaratustra_V в сообщении #587518 писал(а):
достаточно для того, чтобы Математика считала переменные некомплексными? Ускорит ли это процесс?

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

 Профиль  
                  
 
 Re: Проблема с решением сист. триг-ких. ур-ний в Mathematica
Сообщение21.06.2012, 11:28 
Админ форума
Аватара пользователя


19/03/10
8952
 ! 
Aritaborian в сообщении #587443 писал(а):
Заратустра, я ни фига не понял вы тут привели не вашу исходную задачу
Aritaborian, замечание за искажение ника пользователя.

 Профиль  
                  
 
 Re: Проблема с решением сист. триг-ких. ур-ний в Mathematica
Сообщение21.06.2012, 11:47 
Заслуженный участник
Аватара пользователя


23/07/08
10910
Crna Gora
Zaratustra_V
Будьте добры, опишите, в чём Ваша задача (вернее, этот её этап).
Если это касается поворотов в пространстве, есть надежда, что существуют явные формулы.
Только Вы пока попробуйте на словах объяснить, с минимумом формул.

 Профиль  
                  
 
 Re: Проблема с решением сист. триг-ких. ур-ний в Mathematica
Сообщение21.06.2012, 13:31 


18/12/10
22
Существует система координат OXYZ и два варианта ее поворота, через матрицу Mzyx(оси поворотов ортогональны) и Mmlk(оси поворотов неортогональны), задача состоит в нахождении таких дополнительных углов поворота по каждой из осей, чтобы довернувшись на них через матрицу Mmlk система заняла тоже положение, что и при повороте через матрицу Mzyx.
Это если в кратце.

 Профиль  
                  
 
 Re: Проблема с решением сист. триг-ких. ур-ний в Mathematica
Сообщение21.06.2012, 14:08 
Аватара пользователя


11/06/12
10390
стихия.вздох.мюсли
Zaratustra_V, в Математике есть функции RotationTransform и RotationMatrix, описывающие повороты в $n$ измерениях. Не уверен, что они помогут вашей задаче, но посмотреть их описание, ИМХО, стоило бы.

(Оффтоп)

Toucan, понял, в будущем постараюсь не нарушать это правило ;-)

 Профиль  
                  
 
 Re: Проблема с решением сист. триг-ких. ур-ний в Mathematica
Сообщение21.06.2012, 16:40 


18/12/10
22
Vince Diesel в сообщении #587520 писал(а):
Zaratustra_V в сообщении #587518 писал(а):
достаточно для того, чтобы Математика считала переменные некомплексными? Ускорит ли это процесс?

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


По идее если Математика не могла бы найти решение она бы так и сказала, но возвращаясь к моему первому посту:
Zaratustra_V в сообщении #587430 писал(а):
После запука решателя математика задумывается и примерно 2 дня оперирует процессором и оперативной памятью, потом процессор больше не загружает, но с памятью продолжает работать.

То что математика перестает пользоваться процессором, означает, что ждать больше нечего и можно прерывать вычисление или еще можно надеятся на получение результата?

 Профиль  
                  
 
 Re: Проблема с решением сист. триг-ких. ур-ний в Mathematica
Сообщение21.06.2012, 17:08 
Заслуженный участник
Аватара пользователя


30/01/06
72407
Zaratustra_V в сообщении #587566 писал(а):
Существует система координат OXYZ и два варианта ее поворота, через матрицу Mzyx(оси поворотов ортогональны) и Mmlk(оси поворотов неортогональны), задача состоит в нахождении таких дополнительных углов поворота по каждой из осей, чтобы довернувшись на них через матрицу Mmlk система заняла тоже положение, что и при повороте через матрицу Mzyx.
Это если в кратце.

Если вкратце, нужно просто поделить одну матрицу на другую. Потом, при желании, результат можно выразить через углы Эйлера (формулы стандартные: http://en.wikipedia.org/wiki/Euler_angl ... rientation http://en.wikipedia.org/wiki/Rotation_f ... ler_angles ), или как-то ещё через повороты вокруг осей.

Если не вкратце, то вы вообще путаете задание поворота системы координат матрицей, и углами поворота относительно осей. Это разные вещи. Последовательность поворотов вокруг осей даёт матрицу. Но когда матрица вычислена, уже неважно, какая последовательность поворотов её дала (и существуют разные последовательности поворотов, которые к ней приводят, для единственности тут нужно наложить ещё дополнительные условия). Так что плевать, как ваши матрицы были получены, если они уже просто есть. Что такое "довернувшись на них через матрицу" - вообще только вам одному известно. Это означает, сначала поворот на матрицу, а потом на искомые углы вокруг осей, или наоборот, сначала на искомые углы вокруг осей, а потом на матрицу? Повороты некоммутативны.

-- 21.06.2012 18:09:51 --

И общий совет на будущее: не поручайте автоматическим системам, типа Mathematica, задач, в которых вы надеетесь, что они будут умнее вас. Поручайте им только такие задачи, в которых вы умнее их, и на большее не рассчитываете.

 Профиль  
                  
 
 Re: Проблема с решением сист. триг-ких. ур-ний в Mathematica
Сообщение21.06.2012, 22:57 


18/12/10
22
Munin в сообщении #587641 писал(а):
Если вкратце, нужно просто поделить одну матрицу на другую. Потом, при желании, результат можно выразить через углы Эйлера (формулы стандартные: http://en.wikipedia.org/wiki/Euler_angl ... rientation http://en.wikipedia.org/wiki/Rotation_f ... ler_angles ), или как-то ещё через повороты вокруг осей.

Если не вкратце, то вы вообще путаете задание поворота системы координат матрицей, и углами поворота относительно осей. Это разные вещи. Последовательность поворотов вокруг осей даёт матрицу. Но когда матрица вычислена, уже неважно, какая последовательность поворотов её дала (и существуют разные последовательности поворотов, которые к ней приводят, для единственности тут нужно наложить ещё дополнительные условия). Так что плевать, как ваши матрицы были получены, если они уже просто есть. Что такое "довернувшись на них через матрицу" - вообще только вам одному известно. Это означает, сначала поворот на матрицу, а потом на искомые углы вокруг осей, или наоборот, сначала на искомые углы вокруг осей, а потом на матрицу? Повороты некоммутативны.

-- 21.06.2012 18:09:51 --

И общий совет на будущее: не поручайте автоматическим системам, типа Mathematica, задач, в которых вы надеетесь, что они будут умнее вас. Поручайте им только такие задачи, в которых вы умнее их, и на большее не рассчитываете.

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

Поясните, пожалуйста, что я могу получить поделив одну матрицу на другую?

 Профиль  
                  
 
 Re: Проблема с решением сист. триг-ких. ур-ний в Mathematica
Сообщение22.06.2012, 00:24 
Заслуженный участник
Аватара пользователя


30/01/06
72407
Zaratustra_V в сообщении #587744 писал(а):
Возможно, я не достаточно хорошо владею вопросом и не строго выражаюсь, т.к. занимаюсь озвученной проблемой недавно.

Ну вы ссылки прочитали?

Пусть у вас одна и та же исходная система координат $S$ переводится матрицей $M_1$ в систему координат $S_1,$ а матрицей $M_2$ - в систему координат $S_2.$ Тогда, чтобы перевести систему координат $S_1$ в $S_2,$ следует использовать матрицу $M_{12}=M_2M_1^{-1}.$ Более того, это единственный ответ, других нет. Поскольку у вас повороты не сопровождаются растяжениями и сдвигами системы координат, то все матрицы - ортогональные, а значит, $M_1^{-1}$ вычисляется просто как $M_1^{-1}=M_1^T.$

Если вам нужны углы Эйлера (углы поворотов вокруг осей $z,x,z$), то вычиляются они по элементам матрицы $M_{12}$:
$\varphi=\arctg\tfrac{m_{31}}{m_{32}}$
$\theta=\arccos m_{33}$
$\psi=-\arctg\tfrac{m_{13}}{m_{23}}$
На самом деле, результат здесь неоднозначный (можно выбрать другие углы), так что, возможно, из-за этого Mathematica в ступор и впадает.

Почитайте линейную алгебру, чтобы разобраться с матрицами и их свойствами, и решениями уравнений для матриц.

Zaratustra_V в сообщении #587744 писал(а):
Тогда не сочтите за труд объясните мне мои ошибки, но прошу, делайте это корректно.

Ничем не хотел вас обидеть. Просто вы явно разобрались в материале меньше, чем нужно, чтобы задать Mathematic-е правильный вопрос.

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

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



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

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


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

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