2016-12-07 2 views
2

Как говорит название, вот моя система:Python-Вычисление корней простой нелинейной системы уравнений

[;Acos(\phi)=1;] 

[;-0.5Asin(\phi)=0;] 

Очевидные решения

A=1 and [;\phi=n\pi , n\in \mathbb{Z};],

I попробовал использовать sympy..nsolve (не работает) и scipy..fsolve (дает ошибку «Результат вызова функции не является правильным массивом поплавков»)

+0

* 'scipy..fsolve (дает ошибку «Результат вызова функции не является правильным массивом поплавков»)' * Если вы не показываете нам фактический код, который вы использовали, трудно кому-либо помочь вы с этим. Создание [минимального, полного, проверяемого примера] (http://stackoverflow.com/help/mcve) облегчит кому-то помощь в решении этой проблемы. –

ответ

1

Наличие тригонометрических функций затрудняет решение системы, даже если оно кажется «простым».

Один подход легко найти решение системы, которая включает в себя член вида cos(x) и/или sin(x) должен выполнить замену u=cos(x), v=sin(x), ввести дополнительное уравнение u**2 + v**2 == 1, и решить для u, v. Затем переменную x можно получить из значения (значений) u.

import sympy as sp 

A, u, v, phi = sp.symbols('A, u, v, phi', real = True) 

eqs = [sp.Eq(A * u, 1), sp.Eq(-A * v/2, 0), sp.Eq(u**2 + v**2, 1)] 
sol = sp.solve(eqs, [A, u, v]) 
print (sol) 

[(-1, -1, 0), (1, 1, 0)]

Отсюда следует, что A может принимать два значения (-1, 1). Для A=-1 он должен держать u==-1, что соответствует бесконечному числу значений phi следующего

sp.solveset(sp.Eq(sp.cos(phi),-1), phi) 

ImageSet(Lambda(_n, 2*_n*pi + pi), Integers())

Процедура аналогична для A=1.

Смежные вопросы