2014 dxdy logo

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

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




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


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

У меня есть уравнение:
Код:
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
1786
Если только график рисовать, то можно считать численно. Например, при условии, что положительный корень один, так:
Код:
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
417
Спасибо за предложение, алгоритм удалось организовать но почему-то два разных способа решения приводят к двум разным ответам.

Первый способ такой:
Код:
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
802
Решил уравнение в Мэйпле. Результат похож на вторую картинку: положительные значения действительного корня $qp$ получаются только возле плоскостей $m5 = 0$ и $q=0.$ См. в Dropbox

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


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

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

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



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

Сейчас этот форум просматривают: gris


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

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