【发布时间】:2015-09-01 20:35:24
【问题描述】:
我有一个非线性方程组,其中可以选择任意n,所以向量长度x = (x1,...,xn)可以与众不同。例如,系统可以是这样的:
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,我使用 scipy 库的 fsolve() 来求解这样的 NLE,但对于 *x = x0 的每个初始近似,它只返回一个解。但是由于n可以很大(例如n = 100),而且可以有很多解,所以做初始条件不是很有用 x = x0 用于找到每个解决方案。
那么,请给我一个例子,在这种情况下如何通过 fsolve() 找到 所有 解决方案?还是用其他简单的方法?
附加 例如,我有以下简单的系统:
def equations(p):
x, y = p
return (x**2-1, x**3-1)
对于不同的初始条件,我有不同的解决方案: x, y = 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) 等,我只确定 x0 的约束, y0, 像这样:-1.0
【问题讨论】:
-
P.S.我已经实现了我需要的功能系统,例如
,以及使用 fsolve(sys1, x0) 解决这些系统的模块。因此,如果您也给我举一个 fsolve() 或方法的例子,这将非常有帮助,它可以简单地替换 fsolve((f1, f2), x0) 或 fsolve([f1, f2], x0)。
标签: python numpy scipy equation-solving nonlinear-functions