From 1fb7616c937f497bcbb99a88116f126006d77b7c Mon Sep 17 00:00:00 2001 From: Daniel Heras Quesada Date: Sun, 16 Nov 2025 18:45:08 +0100 Subject: [PATCH] feat: derivates --- src/main.py | 15 +++++++++++++++ src/modules/__pycache__/math.cpython-313.pyc | Bin 1557 -> 3341 bytes .../__pycache__/strings.cpython-313.pyc | Bin 406 -> 406 bytes src/modules/math.py | 12 +++++++++++- 4 files changed, 26 insertions(+), 1 deletion(-) diff --git a/src/main.py b/src/main.py index 4897a93..8dadd26 100644 --- a/src/main.py +++ b/src/main.py @@ -1,4 +1,8 @@ +from sympy import diff, limit, oo, symbols + from modules.math import ( + t_build_partial_derivate, + t_build_derivate, t_calculate_e, t_calculate_e_limit, t_compound_interest, @@ -23,3 +27,14 @@ if __name__=="__main__": print(t_limit()) print(t_calculate_e_limit()) print(t_calculate_e_limit().evalf()) + x = symbols("x") + derivative = t_build_derivate(x ** 2) + value_on_two = derivative.subs(x,2) + print(derivative, value_on_two) + # Partial derivates are applied to one variable at a time + y = symbols("y") + z = symbols("z") + partial_derivative_y = t_build_partial_derivate((3 * y ** 3) + 2 * z ** 2, y) + partial_derivative_z = t_build_partial_derivate((3 * y ** 3) + 2 * z ** 2, z) + print(partial_derivative_y, partial_derivative_z) + diff --git a/src/modules/__pycache__/math.cpython-313.pyc b/src/modules/__pycache__/math.cpython-313.pyc index eb1aa6039afb33f811b37158d4b1396667031e7a..81f90b537ffe18a1be647ff46417af161cb3d4de 100644 GIT binary patch literal 3341 zcmbtW&2JmW6`$d9$>oz%J4x2lrOp`lpZ(5V#8mIiwfeQt43i*58}uQdHHZhYYZ9W@l#S z{oe0=?3`pWNrtwUnzMcvW9(~s30tH;IQb(6&za72evfT%5y{awa!=Wais*(aRLpTX zr`(He#6^5V6WT^XBsP*FiTUUp6DeJVOzSboj2?#^(KX0XJpnnUCn2+X3UXXeLr&-! z$P4-i1Td&t8DozJm{v?7}x(Up}xDHCj^KfBW3 zork{7%HUJ1(uY69bMga-@3S0^F0l!A7mV9nXC=O*GWM7~S99!snz0mi?C=}PBVLFc zk($i|R*3kK`D?{pr*0Oj@7q?jc*m(U>!$6w#oJEREH?JNUB_P9-d{5J zjC!MH7F|&()}3mzX1c|?;q5Lr_Wi`o9n&U?R{dG8>^AH5<(oC9V$|H#<-rmKg?j^jGnYK9mLQ8mFBZ2td&$I_rnpe3#D$SjhUY4VcJbh9X$!TN6tu z#+LBD^%li2xr2JRB(fQJuVh0APp>rUTrG8xR-(fbH=O56LFgT53+6#xa~fC3lO)WyVA zbfQ3Fk;F9!KL$3MHP7c|mrxQ1Aq$rRkDXzmY}9rfVeL>Hy@CA{mG0XRAS5~3ntGKS z?eNZzK3Z-)c$FIKWIMn3A~oMKUMh)zs?1_fS^V(&iNews|Dmwd>^Cu%7;Rk)I3te2 zHgGqk3UT%@Twz<|XPqs>A7+9McA)%+nJyjr?KV{$+p}!TX}W^SBs>t*9O>j|+0Nd_ zzwc#V?`c=N{OWn2q*XeX@=5}wY9w0#G%UzH^QyMm12ezGCVisibNW4m-x zKQ%JIXVfaqn&FvcQ~Ve!3wYcq2tY|B+YdT(Pkz%&y!Im5(-ymYF<|Ulz?=qqiG^GZ z*EEzC^|4WFn!`AdqJxT7whgZ-jGFiLVctPI+~YwuucxUT9v z#9-rY5s+l_)1U9w*h30U*;a^BG&@p?pynu>KHrmN2T@3cU4T|55)cJNtfKSzBe9JB ztk2`Hg)RnS9ZQszZXN>VP))b>KfKq<6V*R;Jgp?We`o)Jtt7OdD(-w1Hil znEKy#g_cq64BY?!Y=lQ{VY8rQFGQp@Vh!VSMgBB8`c~b>t~Y5Xm7Za%V)6Fnw((@) z1FN&%Qzv1bmT4Q$e)e><%csvL8qqFen1YTH?Fv-_j6;XfOljc0C3qlM#{~ytiuN$9 z=w1Mqtf341l5jn)#~{4!EG3Au8M&sT|72F|WMcv})CIADSuN#SXeX zy0DhW*68ORZ(R!X)BhlB13H6}aGHhZZx(m)4Sc?a&X4sku5?uRrMSWu1hRVZxiO9oE!DM&B6zR9bUyweCO zMDjN+e@(KM%UUU`lq?Q1!vqDS^q^!*5Jp+`BuBvwK)V@SS69Wau}X})2E;cC=ln~S z|BB7`*!(|Zj9)usi^s7DUpUq{pFWOpK1JdpiMNkqDjz)_;k-bv3nZ?Qm^h9_v5;2y R%yF9Y8#Fg|0x=^Y{2K+ZcA5YH delta 660 zcmYk3zi-n(6vyv}f7?kQp`nRfl7@6JZG~XS1O+w(QU|;-V1?FdQ^j_9cBF1ZYz#<6 zr}8HtI`RjwF{4&2=tL1KTTvF+c;^VIC*4Q)zVFAqclV}!js%p^^rsRA!na*GI?9KxvBO~6O5 zCtmOc>;#jSRdPV3yOkyTDLi=I`@q@Sg4k|UJRuEJ2-D(^@_-gql)W;qg+Fd7L zn@~j`SmLR6vr`V=C?Zugo21*(C@o@$^8!{ds4hNeD|r7G?HM)1x_)bL8P&jqWmTc4 za9yE~kOrnr#)YJjq8K*_1??X)5_W@Uwbu}apEog z=EQBC8^o?nm!OVen}H+stz=m2f`%qsLrAT()lZf0UA`2k!ONaO-2>|1$_n#8vhF0= j_GBDyz&bi8?mR%8JDgH_M*3&uiumNUoS9+JTAB9`Y88zO diff --git a/src/modules/__pycache__/strings.cpython-313.pyc b/src/modules/__pycache__/strings.cpython-313.pyc index 1cfcf5cf89c8c70e62d3ca96eab6f438186f6ee9..11854a754f43f5da6c69f99ff42cc2910136a7ca 100644 GIT binary patch delta 20 acmbQnJdK(AGcPX}0}$A~li0}J%?JQ9LImLe delta 20 acmbQnJdK(AGcPX}0}vcAXWz)(%?JQ8F$9|c diff --git a/src/modules/math.py b/src/modules/math.py index 096bd86..ac8785e 100644 --- a/src/modules/math.py +++ b/src/modules/math.py @@ -2,7 +2,7 @@ from cmath import log as complex_log # used for complex numbers from math import e, exp, log # Sympy is powerful since it does not make aproximations, it keeps every primitive as it is, this means that it's slower but more precisse -from sympy import limit, oo, symbols +from sympy import diff, limit, oo, symbols def t_summ(): @@ -50,3 +50,13 @@ def t_calculate_e_limit(): x = symbols("x") f = (1 + 1 / x) ** x return limit(f, x, oo) + +# Calculate the slope by taking a close enough point +def t_calculate_derivative(f, x, step_size): + return (f(x + step_size) - f(x)) / (x +step_size - x) + +def t_build_derivate(f): + return diff(f) + +def t_build_partial_derivate(f,symbol): + return diff(f, symbol)