Posted by on 2017年7月1日

[隐藏]

$\alpha (x+1)(x-3) e^{\beta y}=0$
$\lambda (y-5)(y+7) e^{\gamma x}=0$

$(x,y)=(-1,5)$
$(x,y)=(-1,-7)$
$(x,y)=(3,5)$
$(x,y)=(3,-7)$

1.MATLAB

MATLAB中有三种方法：fsolvefminconlsqnonlin

1.1.fsolve

fsolve:
Solves a problem specified by
F(x) = 0
for x, where F(x) is a function that returns a vector value.
x is a vector or a matrix; see Matrix Arguments.

fsolve是MATLAB中最常用的求解非线性方程组的方法，MATLAB中提供三种算法trust-region-dogleg,trust-regionlevenberg-marquardt

1.2.fmincon

interior-point
Trust Region Reflective Algorithm
sqp【2,3】
sqp-legacy
active-set

1.3.lsqnonlin

trust-region-reflective
levenberg-marquardt

2.Fortran

IMSL Numerical Library中的NEQNF方法。

Solves a system of nonlinear equations using a modified Powell hybrid
algorithm and a finite-difference approximation to the Jacobian.

Powell's Method

3.Python

fsolve is a wrapper around MINPACK’s hybrd and hybrj algorithms.

MINIPACK的HYBRD

HYBRD is a modification of the Powell hybrid method. Two of its
main characteristics involve the choice of the correction as a
convex combination of the Newton and scaled gradient directions,
and the updating of the Jacobian by the rank-1 method of Broy-
den.

4.R

nleqslv package

The nleqslv package provides two algorithms for solving (dense) nonlinear systems of equations.
The methods provided are
• a Broyden Secant method where the matrix of derivatives is updated after each major iteration
using the Broyden rank 1 update.
• a full Newton method where the Jacobian matrix of derivatives is recalculated at each iteration

Broyden's method