我正在尝试解决一个大型非线性方程组(大约几百个方程和变量,但变量比方程少)。鉴于系统非常稀疏且庞大,我正在使用optimize.least_squareSciPy 的求解器和 Trust Regions 方法。
但是对于某些示例,找到解决方案需要很长时间,有时它会落在我认为的局部最小值或鞍点上。
我认为这些问题可能来自问题条件不佳的事实。所以我尝试在方程上添加权重,以便为所有残差提供大致相同的比例,它提高了速度和收敛性,但并不完全。
所以我想知道:python中是否有一个工具可以检测函数是否条件不良,或者在调用求解器之前对其进行预处理?
这是我用于求解器的参数:
solution = optimize.least_squares(system, xinput, method='trf, loss='soft_l1', f_scale=10, x_scale='jac')