Derivatives
from sympy import symbols, diff
J = (3)**2
J_epsilon = (3 + 0.001)**2
k = (J_epsilon - J)/0.001 # difference divided by epsilon
print(f"J = {J}, J_epsilon = {J_epsilon}, dJ_dw ~= k = {k:0.6f} ")
'''J = 9, J_epsilon = 9.006001, dJ_dw ~= k = 6.001000 '''
J = (3)**2
J_epsilon = (3 + 0.000000001)**2
k = (J_epsilon - J)/0.000000001
print(f"J = {J}, J_epsilon = {J_epsilon}, dJ_dw ~= k = {k} ")
'''J = 9, J_epsilon = 9.000000006, dJ_dw ~= k = 6.000000496442226 '''
J, w = symbols('J, w')
J=w**2
J
'''𝑤2'''
dJ_dw = diff(J,w)
dJ_dw
'''2𝑤'''
'''Evaluate the derivative at a few points by 'substituting' numeric values for the symbolic values. In the first example, 𝑤 is replaced by 2 .'''
dJ_dw.subs([(w,2)]) # derivative at the point w = 2
dJ_dw.subs([(w,3)]) # derivative at the point w = 3dJ_dw.subs([(w,-3)]) dJ_dw.subs([(w,-3)]) # derivative at the point w = -3
w, J = symbols('w, J')
J = 2 * w
J
'''2𝑤'''
dJ_dw = diff(J,w)
dJ_dw
'''2'''
dJ_dw.subs([(w,-3)]) # derivative at the point w = -3
J, w = symbols('J, w')
J=w**3
J
'''𝑤3'''
dJ_dw = diff(J,w)
dJ_dw
'''3𝑤2'''
dJ_dw.subs([(w,2)]) # derivative at the point w=2
'''12'''
J = (2)**3
J_epsilon = (2+0.001)**3
k = (J_epsilon - J)/0.001
print(f"J = {J}, J_epsilon = {J_epsilon}, dJ_dw ~= k = {k} ")
J, w = symbols('J, w')
J= 1/w
J
'''1/𝑤'''
dJ_dw = diff(J,w)
dJ_dw
dJ_dw.subs([(w,2)])