Professional Documents
Culture Documents
Python Nonlinear Multivariables Optimization
Python Nonlinear Multivariables Optimization
In [12]: # Find vektor gradien yg elemennya berupa turunan pertama parsial (isinya rumus)
gradien = fungsi.jacobian(variabel)
gradien
Out[12]: [ 6xy − 6x 3x
2
+ 3y
2
− 6y 3z
2
− 3]
In [13]: # Find matriks Hessian yg elemennya berupa turunan kedua parsial (isinya rumus)
hesian = gradien.jacobian(variabel)
hesian
Out[13]: ⎡
6y − 6 6x 0
⎤
⎢ 6x 6y − 6 0 ⎥
⎣ ⎦
0 0 6z
In [14]: # mencari semua titik kritis. solve artinya gradien=0. turunan pertama parsial=0
solve(gradien)
Out[14]: [{x: -1, y: 1, z: -1},
{x: -1, y: 1, z: 1},
{x: 0, y: 0, z: -1},
{x: 0, y: 0, z: 1},
{x: 0, y: 2, z: -1},
{x: 0, y: 2, z: 1},
{x: 1, y: 1, z: -1},
{x: 1, y: 1, z: 1}]
In [15]: # menghitung matriks Hessian titik kritis ke-1, yaitu x=-1, y=1, z=-1
hesianvalue1 = hesian.subs([(x,-1),(y,1),(z,-1)])
hesianvalue1
Out[15]: ⎡
0 −6 0
⎤
⎢ −6 0 0 ⎥
⎣ ⎦
0 0 −6
In [16]: # menghitung matriks Hessian titik kritis ke-2, yaitu x=-1, y=1, z=1
hesianvalue2 = hesian.subs([(x,-1),(y,1),(z,1)])
hesianvalue2
Out[16]: ⎡
0 −6 0
⎤
⎢ −6 0 0⎥
⎣ ⎦
0 0 6
In [17]: # menghitung matriks Hessian titik kritis ke-3, yaitu x=0, y=0, z=-1
hesianvalue3 = hesian.subs([(x,0),(y,0),(z,-1)])
hesianvalue3
Out[17]: ⎡
−6 0 0
⎤
⎢ 0 −6 0 ⎥
⎣ ⎦
0 0 −6
In [18]: # menghitung matriks Hessian titik kritis ke-4, yaitu x=0, y=0, z=1
hesianvalue4 = hesian.subs([(x,0),(y,0),(z,1)])
hesianvalue4
Out[18]: ⎡
−6 0 0
⎤
⎢ 0 −6 0⎥
⎣ ⎦
0 0 6
In [19]: # menghitung matriks Hessian titik kritis ke-5, yaitu x=0, y=2, z=-1
hesianvalue5 = hesian.subs([(x,0),(y,2),(z,-1)])
hesianvalue5
Out[19]: ⎡
6 0 0
⎤
⎢0 6 0 ⎥
⎣ ⎦
0 0 −6
In [20]: # menghitung matriks Hessian titik kritis ke-6, yaitu x=0, y=2, z=1
hesianvalue6 = hesian.subs([(x,0),(y,2),(z,1)])
hesianvalue6
Out[20]: ⎡
6 0 0
⎤
⎢0 6 0⎥
⎣ ⎦
0 0 6
In [21]: # menghitung matriks Hessian titik kritis ke-7, yaitu x=1, y=1, z=-1
hesianvalue7 = hesian.subs([(x,1),(y,1),(z,-1)])
hesianvalue7
Out[21]: ⎡
0 6 0
⎤
⎢6 0 0 ⎥
⎣ ⎦
0 0 −6
In [22]: # menghitung matriks Hessian titik kritis ke-8 (terakhir), yaitu x=1, y=1, z=1
hesianvalue8 = hesian.subs([(x,1),(y,1),(z,1)])
hesianvalue8
Out[22]: ⎡
0 6 0
⎤
⎢6 0 0⎥
⎣ ⎦
0 0 6
Interpretasi output:
1.Array pertama (paling kiri dan paling atas) adalah nilai
eigenvalues yg ingin dicari.
In [25]: # Menghitung eigenvalue dari matriks Hessian titik kritis ke-2 (L2)
L2=np.array(hesianvalue2).astype(np.float64)
print(np.linalg.eig(L2))
In [26]: # Menghitung eigenvalue dari matriks Hessian titik kritis ke-3 (L3)
L3=np.array(hesianvalue3).astype(np.float64)
print(np.linalg.eig(L3))
In [27]: # Menghitung eigenvalue dari matriks Hessian titik kritis ke-4 (L4)
L4=np.array(hesianvalue4).astype(np.float64)
print(np.linalg.eig(L4))
In [28]: # Menghitung eigenvalue dari matriks Hessian titik kritis ke-5 (L5)
L5=np.array(hesianvalue5).astype(np.float64)
print(np.linalg.eig(L5))
In [29]: # Menghitung eigenvalue dari matriks Hessian titik kritis ke-6 (L6)
L6=np.array(hesianvalue6).astype(np.float64)
print(np.linalg.eig(L6))
In [30]: # Menghitung eigenvalue dari matriks Hessian titik kritis ke-7 (L7)
L7=np.array(hesianvalue7).astype(np.float64)
print(np.linalg.eig(L7))
In [31]: # Menghitung eigenvalue dari matriks Hessian titik kritis ke-8 (terakhir) (L8)
L8=np.array(hesianvalue8).astype(np.float64)
print(np.linalg.eig(L8))