предположения, которые не работают должным образом - PullRequest
0 голосов
/ 28 апреля 2020

Я пытаюсь определить символ как реальный и положительный, чтобы отсеять нерелевантные корни (т.е. четыре корня, которые он мне дает, должны быть сокращены до двух. Как мне сделать sh это?

import sympy as sp
w=sp.Symbol('w',positive=True,real=True)
J2,k=sp.symbols('J2 k')
J=sp.Matrix([[3,0],[0,1]]) #need to be defined as sp.Matrix in order for det() functiont to work
K=sp.Matrix([[2,-1],[-1,1]])

J=J2*J
K=k*K
x=-w**2*J+K
xx=x.det()
ww=sp.solve(xx,w)
ww

output:

[-sqrt(6)*sqrt(-sqrt(13)*k/J2 + 5*k/J2)/6,
 sqrt(6)*sqrt(-sqrt(13)*k/J2 + 5*k/J2)/6,
 -sqrt(6)*sqrt(sqrt(13)*k/J2 + 5*k/J2)/6,
 sqrt(6)*sqrt(sqrt(13)*k/J2 + 5*k/J2)/6]

Вы можете визуально увидеть, что для w = real, положительные элементы 1 и 3 в этом списке должны быть исключены

1 Ответ

1 голос
/ 29 апреля 2020

Вы не указали никаких предположений для J2 или k, поэтому у sympy нет возможности узнать, является ли какой-либо из корней положительным, отрицательным или даже действительным:

Если вы сделаете

J2, k = sp.symbols('J2, k', positive=True)

Тогда вы можете получить:

In [26]: ww
Out[26]: 
⎡     ______________       _____________⎤
⎢√6⋅╲╱ -√13⋅k + 5⋅k   √6⋅╲╱ √13⋅k + 5⋅k ⎥
⎢───────────────────, ──────────────────⎥
⎢          ____                ____     ⎥
⎣      6⋅╲╱ J₂             6⋅╲╱ J₂      ⎦
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...