У меня есть система нелинейных уравнений, где можно Choosed любой п, поэтому длина вектора х = (x1, ..., хп) могут быть разными. Например, система может быть как то:SciPy - Все решения нелинейных уравнений системы
f1(x1,...,xn) = sum(xi + xi^2) = 0, i={1,n}
f2(x1,...,xn) = sum(e^xi + xi + sin(xi*pi)) = 0, i={1,n}
Согласно this example, я использую fsolve() из SciPy библиотеки для решения такой NLE, но он возвращает только одно решение для каждого начального приближения * х = х0 , Но так как n может быть большим (например, n = 100), и может быть много решений, поэтому нецелесообразно делать начальные условия x = x0 для нахождения каждого решения.
Так что, пожалуйста, не могли бы вы дать мне пример, как найти Всех решения от fsolve() в такой ситуации? Или любым другим простым способом?
Дополнительного Например, я folloving простой системы:
def equations(p):
x, y = p
return (x**2-1, x**3-1)
С различным исходным condiotions я имею разные решения: х, у = fsolve (уравнения, (0, 0)) (0,0, 0,0)
x, y = fsolve(equations, (1, 1))
(1.0, 1.0)
x, y = fsolve(equations, (-1, 1))
(-0.47029706057873205, 0.41417128904566508)
можно использовать любую SciPy-функцию, как fsolve(), чтобы ц Все решения (корни), например: x, y = some_scipy_solver (уравнения, (x0, y0)) 1. (1.0, 1.0) 2. (0.0, 0.0) 3. (-0.47029706057873205, 0.41417128904566508) ...
где (x0, y0) = любое начальное приближение: (0, 0), (1, 1), (- 1, 1), (0,1, 10,0) и т. Д., И где I определите только ограничения для x0, y0, например: -1.0 < = x0 < 1.0, 0.0 < = x0 < 11.0.
P.S.Я уже реализовал системы функций, которые мне нужны, например и модуль для решения этих систем с помощью fsolve (sys1, x0). Поэтому было бы очень полезно, если вы дадите мне пример с fsolve(), а также с помощью метода, который может просто заменить fsolve ((f1, f2), x0) или fsolve ([f1, f2], x0). –
Fruitty