Это немного сбивает с толку, потому что вы говорите, что «не можете получить сложную часть», но в вопросе вы говорите, что вы ищете решения, где мнимая часть равна 0, а величина реальной части находится между 0 и 1. Если это правильно, то nsolve
может решить эту пару уравнений, если вы достаточно хорошо начальное предположение:
>>> from sympy import symbols
>>> v = symbols('tau1:3')
>>> nsolve(f(v), (tau1, tau2), (.5,.4))
Matrix([
[0.495387590772031],
[ 0.49736468918969]])
Вы можете получить приблизительное представление о том, где искать корни, посмотрев на значения t1
и t2
для различных значений tau1
и tau2
. Поскольку они оба должны быть равны нулю, я смотрю логарифм суммы квадратов - чем меньше, тем лучше:
>>> Matrix(10,10,lambda i,j:
log(sqrt(sum([k.subs(tau1,i/10).subs(tau2,j/10)**2 for k in (t1,t2)]))).round())
Matrix([
[zoo, zoo, zoo, zoo, zoo, zoo, zoo, zoo, zoo, zoo],
[-17, -5, -6, -3, -2, -2, -3, -4, -5, -7],
[ -7, -2, -1, 0, 0, 0, 0, 0, -1, -2],
[ -1, 0, 3, 4, 3, 3, 4, 4, 3, 1],
[ 3, 4, 6, 7, 6, 4, 7, 7, 6, 4],
[ 5, 6, 8, 9, 9, 5, 9, 9, 8, 6],
[ 8, 8, 10, 11, 11, 6, 11, 11, 10, 8],
[ 9, 9, 11, 12, 12, 7, 12, 12, 11, 9],
[ 9, 10, 12, 13, 13, 7, 13, 13, 12, 10],
[ 8, 11, 13, 13, 13, 7, 13, 13, 12, 10]])
(Значения зоопарка соответствуют тривиальному решению, когда tau1
равно нулю.