Skip to content
Snippets Groups Projects
Commit 03087e32 authored by iliya's avatar iliya
Browse files

fix: added additional casts

parent 26da14b5
Branches
No related tags found
No related merge requests found
......@@ -79,7 +79,7 @@ class Dual_Number:
b2 = b
# Fin de la partie pour assurer la compatibilité entre int/float et Dual_Numbers
return Dual_Number(real=a.r * b.r, dual=a.r * b.d + a.d * b.r)
return Dual_Number(real=a.r * b2.r, dual=a.r * b2.d + a.d * b2.r)
# multiplication a.__rmul__(b)
__rmul__ = __mul__
......@@ -103,13 +103,38 @@ class Dual_Number:
return Dual_Number.mult_inverse(a) * b
def exp(a):
return Dual_Number(np.exp(a.r), np.exp(a.r) * a.d)
if type(a) in [int, float]:
a2 = Dual_Number(real=a, dual=0)
else:
a2 = a
return Dual_Number(real=np.exp(a2.r), dual=(np.exp(a2.r) * a2.d))
def sin(a):
return Dual_Number(np.sin(a.r), np.cos(a.r) * a.d)
if type(a) in [int, float]:
a2 = Dual_Number(real=a, dual=0)
else:
a2 = a
return Dual_Number(real=(np.sin(a2.r)), dual=(np.cos(a2.r) * a2.d))
def cos(a):
return Dual_Number(np.cos(a.r), -np.sin(a.r) * a.d)
if type(a) in [int, float]:
a2 = Dual_Number(real=a, dual=0)
else:
a2 = a
return Dual_Number(real=(np.cos(a2.r)), dual=(-np.sin(a2.r) * a2.d))
def log(a):
"""
Natural log (ln)
Returns:
"""
if type(a) in [int, float]:
a2 = Dual_Number(real=a, dual=0)
else:
a2 = a
return Dual_Number(real=(np.log(a2.r)), dual=((1 / a2.r) * a2.d))
def Exercice1_a():
......@@ -154,10 +179,19 @@ def sigmoid_exo():
[print(f"Sigmoid de {i} = {sigmoid(i)}") for i in range(10)]
def test():
a = Dual_Number(2, 1)
b = Dual_Number(2, -1)
c = Dual_Number(1, 2)
print(f"(a / b) * c = {a / b * c}")
if __name__ == "__main__":
Exercice1_a()
Exercice1_b()
Exercice1_c()
Exercice1_d()
Test_exp_sin()
sigmoid_exo()
test()
# Exercice1_a()
# Exercice1_b()
# Exercice1_c()
# Exercice1_d()
# Test_exp_sin()
# sigmoid_exo()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment