- import sympy as sp
- x1, x2, x3, x4, x5, x6 = sp.symbols('x1 x2 x3 x4 x5 x6')
- mu = sp.Rational(59, 8) # 7.375
- # Stationary values
- vals = {x1: sp.Rational(3,2), x2: sp.Rational(3,2), x3: sp.Rational(3,2),
- x4: sp.Rational(3,2), x5: -1, x6: -1}
- P = x1*x2*x3*x4*x5*x6
- # Build H_xx
- H_xx = sp.zeros(6, 6)
- vars = [x1, x2, x3, x4, x5, x6]
- for i, xi in enumerate(vars):
- for j, xj in enumerate(vars):
- if i == j:
- H_xx[i, j] = -6*P/xi**2 + 6*xi - 12*xi**2 - 2*mu
- else:
- H_xx[i, j] = 6*P/(xi*xj)
- # Top block
- top = sp.Matrix([
- [0, 0, 1, 1, 1, 1, 1, 1],
- [0, 0, 2*x1, 2*x2, 2*x3, 2*x4, 2*x5, 2*x6]
- ])
- # Bottom block
- bottom = sp.Matrix([
- [1, 2*x1, *H_xx[0, :]],
- [1, 2*x2, *H_xx[1, :]],
- [1, 2*x3, *H_xx[2, :]],
- [1, 2*x4, *H_xx[3, :]],
- [1, 2*x5, *H_xx[4, :]],
- [1, 2*x6, *H_xx[5, :]],
- ])
- # Full bordered Hessian
- B = sp.Matrix.vstack(top, bottom).subs(vals)
- # Leading principal minors Δ5..Δ8
- deltas = [sp.simplify(B[:k, :k].det()) for k in range(1, 9)]
- deltas[4], deltas[5], deltas[6], deltas[7]
Copy the Code 主子式为- $\Delta_5 = 0$
- $\Delta_6 = 0$
- $\Delta_7 = -\frac{341297975}{16}$
- $\Delta_8 = \frac{63822721325}{16}$
根据上面的准则,证明了极大值。 |