2014 dxdy logo

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

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





Начать новую тему Ответить на тему
 
 Solve для длиного выражения в mathematica
Сообщение09.04.2017, 21:49 


22/06/12
400
Всем доброго времени суток. Нужна ваша помощь.

У меня есть уравнение:
Код:
j - Sqrt[q^2 + qp^2 -
   2 q qp Cos[\[Theta]]] - \[Sqrt](qp^2 +
     1/2 (16 m5^2 + ma^2 + mp^2 -
        Sqrt[(-(16 m5^2) - ma^2 - mp^2)^2 -
         4 (ma^2 mp^2 - 16 m5^2 qp^2)])) == 0


где

Код:
\[Theta] = Pi/6; ma = 980; mp = 139;
j = \[Sqrt](q^2 +
    1/2 (16 m5^2 + ma^2 + mp^2 +
       Sqrt[(-(16 m5^2) - ma^2 - mp^2)^2 -
        4 (ma^2 mp^2 - 16 m5^2 q^2)]))


$qp $ реально и положительно. Я хочу найти функцию $qp$ как функцию $q>0$ и $m5>0$ (или хотябы как функцию одной переменной $q>0$ при $m5=constant>0$)

Я пытался решать следующим путём:

Код:
Solve[ j - Sqrt[
     q^2 + qp^2 -
      2 q qp Cos[\[Theta]]] - \[Sqrt](qp^2 +
        1/2 (16 m5^2 + ma^2 + mp^2 -
           Sqrt[(-(16 m5^2) - ma^2 - mp^2)^2 -
            4 (ma^2 mp^2 - 16 m5^2 qp^2)])) == 0 && qp > 0 , qp,
  Reals];


Математика думает несколько часов и зависает. Был бы очень признателен если бы указали где моя ошибка.

После нахождения $qp$ я бы хотел построить: $z=qp^2+m5^2$ (В реальности функция $z$ устроенна намного сложнее)

 Профиль  
                  
 
 Re: Solve для длиного выражения в mathematica
Сообщение09.04.2017, 22:12 
Заслуженный участник


25/02/11
1520
Если только график рисовать, то можно считать численно. Например, при условии, что положительный корень один, так:
Код:
equation[q_, m5_] =  j - Sqrt[q^2 + qp^2 - 2 q qp Cos[\[Theta]]] - \[Sqrt](qp^2 + 1/2 (16 m5^2 + ma^2 + mp^2 -
         Sqrt[(-(16 m5^2) - ma^2 - mp^2)^2 - 4 (ma^2 mp^2 - 16 m5^2 qp^2)])) == 0;
f[q_, m5_] := qp /. NSolve[equation[q, m5] && qp > 0, qp][[1]]

 Профиль  
                  
 
 Re: Solve для длиного выражения в mathematica
Сообщение21.04.2017, 21:30 


22/06/12
400
Спасибо за предложение, алгоритм удалось организовать но почему-то два разных способа решения приводят к двум разным ответам.

Первый способ такой:
Код:
eqn = j -
        Sqrt[q^2 + qp^2 -
          2 q qp Cos[\[Theta]]] - \[Sqrt](qp^2 +
           1/2 (16 m5^2 + ma^2 + mp^2 -
              Sqrt[(-(16 m5^2) - ma^2 - mp^2)^2 -
                4 (ma^2 mp^2 - 16 m5^2 qp^2)])) == 0;
    With[{gensol = Solve[eqn , qp]},
      Block[{\[Theta] = Pi/6, ma = 980, mp = 139,
        j},(*subs vals when gensol is evaluated*)
       j = \[Sqrt](q^2 +
           1/2 (16 m5^2 + ma^2 + mp^2 +
              Sqrt[(-(16 m5^2) - ma^2 - mp^2)^2 -
                4 (ma^2 mp^2 - 16 m5^2 q^2)]));
       sols = gensol]];
    qpC13 = Compile[{{q, _Complex}, {m5, _Complex}},
       Evaluate[qp /. sols[[3]]],
       RuntimeOptions -> "EvaluateSymbolically" -> False] ;
       Plot3D[Re@qpC13[q, m5], {q, 0, 10000}, {m5, 0, 2000},
     AxesLabel -> Automatic]


Картинка которая получается:
Изображение

Второй способ немного иной:
Код:
eqn = j -
    Sqrt[q^2 + qp^2 -
      q qp Cos[\[Theta]]] - \[Sqrt](qp^2 +
       1/2 (16 m5^2 + ma^2 + mp^2 -
          Sqrt[(-(16 m5^2) - ma^2 - mp^2)^2 -
            4 (ma^2 mp^2 - 16 m5^2 qp^2)])) == 0;

With[{gensol = Solve[eqn, qp]},
  Block[{\[Theta] = Pi/6, ma = 980, mp = 139, j},
   j = \[Sqrt](q^2 +
       1/2 (16 m5^2 + ma^2 + mp^2 +
          Sqrt[(-(16 m5^2) - ma^2 - mp^2)^2 -
            4 (ma^2 mp^2 - 16 m5^2 q^2)]));
   sols = gensol]];
opt = Experimental`OptimizeExpression[qp /. sols[[3]]];
Block[{\[Theta] = Pi/6, f},
f[q0_, m50_] :=
  Block[{q = SetPrecision[q0, 40], m5 = SetPrecision[m50, 40], qp},
   qp = First@opt;
   Re@qp /; Im@qp == 0];
Plot3D[f[q, m5], {q, 0, 10000}, {m5, 0, 1000}, MaxRecursion -> 3,
  AxesLabel -> Automatic]]


Картинка получается другая:
Изображение

Не подскажите, почему так происходит? Уже лысину прочесал - не пойму в чём дело.

 Профиль  
                  
 
 С Мэйплом
Сообщение22.04.2017, 12:06 


11/07/16
272
Решил уравнение в Мэйпле. Результат похож на вторую картинку: положительные значения действительного корня $qp$ получаются только возле плоскостей $m5 = 0$ и $q=0.$ См. в Dropbox

 Профиль  
                  
 
 Re: Solve для длиного выражения в mathematica
Сообщение22.04.2017, 23:26 


22/06/12
400
Спасибо, посмотрел. Видимо ситуация в том, что во втором варианте отбрасывается комплексные решения полностью, в то время как в первом варианте лишь мнимые части решений.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

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



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

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


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

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