diff --git a/derive_and_min-max.py b/derive_and_min-max.py
index 93479b36d62a403d5e11b7a39acb8bccc450ffc5..3cb9b26aa274803e50fd3e9aea0118f59f809e77 100644
--- a/derive_and_min-max.py
+++ b/derive_and_min-max.py
@@ -30,23 +30,57 @@ import numpy as np
 
 
 # g(x) = x*x*exp( ln( x*x*x*x + 2 ) * sin(x) + 1 )
-def g(x: Dual_Number) -> float:
-    return (x * x * Dual_Number.exp(Dual_Number.log(x * x * x * x + 2) * Dual_Number.sin(x) + 1)).d
+# def g(x: Dual_Number) -> float:
+#     return (x * x * Dual_Number.exp(Dual_Number.log(x * x * x * x + 2) * Dual_Number.sin(x) + 1)).d
 
 
-def h(x: Dual_Number) -> float:
-    return g(2 * x - 0)
+# def h(x: Dual_Number) -> float:
+#     return g(2 * x - 0)
 
 
 # def dgdx(x: float) -> float:
 #     return g(Dual_Number(x, 1))
 
 
-def dhdx(x: float) -> float:
-    return h(Dual_Number(x, 1))
+# def dhdx(x: float) -> float:
+#     return h(Dual_Number(x, 1))
+
+
+def P(x: Dual_Number, y: Dual_Number) -> float:
+    return (3 * (x * x) * y + 2 * x * (y * y) - x * y + 2 * x - 1).d
+
+
+def delPdelx(x: float, y: float) -> float:
+    return P(Dual_Number(x, 1), y)
+
+
+def delPdely(x: float, y: float) -> float:
+    return P(x, Dual_Number(y, 1))
+
+
+def Z(x: Dual_Number, y: Dual_Number, z: Dual_Number) -> float:
+    return (x * y * z + x * x + y * y).d
+
+
+def delZdelx(x: float, y: float, z: float) -> float:
+    return Z(Dual_Number(x, 1), y, z)
+
+
+def delZdely(x: float, y: float, z: float) -> float:
+    return Z(x, Dual_Number(y, 1), z)
+
+
+def delZdelz(x: float, y: float, z: float) -> float:
+    return Z(x, y, Dual_Number(z, 1))
 
 
 if __name__ == "__main__":
+    print(delPdelx(1, 1))
+    print(delPdely(1, 1))
+    print()
+    print(delZdelx(0, 1, -1))
+    print(delZdely(0, 1, -1))
+    print(delZdelz(0, 1, -1))
     # Example for f(x)
     # start = -6
     # stop = -1
@@ -59,8 +93,8 @@ if __name__ == "__main__":
     # start = -5
     # stop = 9
 
-    start = -1
-    stop = -0.8
+    # start = -1
+    # stop = -0.8
     # start = 3.5
     # stop = 5.5
 
@@ -79,5 +113,5 @@ if __name__ == "__main__":
     # print(f"Iter bisection = {iter_bisection(start, stop, dgdx, False)}")
     #
     # print(f"Iter regula falsi = {iter_regula_falsi(start, stop, dhdx, False)}")
-    print("----------------------------------------------")
-    print(f"Iter bisection = {iter_bisection(start, stop, dhdx, True)}")
+    # print("----------------------------------------------")
+    # print(f"Iter bisection = {iter_bisection(start, stop, dhdx, True)}")