Poul Riis wrote: > Den onsdag den 30. marts 2016 kl. 17.59.49 UTC+2 skrev Steven D'Aprano: >> On Thu, 31 Mar 2016 02:23 am, Poul Riis wrote: >> >> > What I intend to do is to let sympy find the derivative of some >> > welldefined function and next define the foundation derivative as a >> > normal function so that I can calculate numerical values or even make a >> > graph. >> >> >> I'm glad you explained what you *actually* wanted, because I was going to >> guess that you wanted to evaluate the derivative at x = 3: >> >> >> py> ftext.evalf(subs={x:3}) >> -0.0600000000000000 >> >> >> >> -- >> Steven > > ... However, the sympy way seems to be about 70 times slower than using > the derivative calculated 'by hand' (try the example below). Can it be > done in a more efficient way?
Hm, the two functions fmsympy() and fm() do not return the same value: $ python -i sympy_diff.py 10000 evaluations with sympy : dt1 = 0.7178411483764648 10000 evaluations without sympy: dt2 = 0.10177111625671387 >>> fm(42) cos(42) >>> fmsympy(42) -0.399985314988351 What's the point of that benchmark? > Poul Riis > > > > from sympy import * > from time import * > x=Symbol('x') > ftext=diff(sin(x),x) > > def fmsympy(t): > return ftext.evalf(subs={x:t}) > > def fm(t): > return cos(t) > > nloop=10000 > tstart=time() > # nloop evaluations with sympy > for i in range(0,nloop): > a=fmsympy(1) > dt1=time()-tstart > > # nloop evaluations without sympy > tstart=time() > for i in range(0,nloop): > a=fm(1) > dt2=time()-tstart > > print(nloop,' evaluations with sympy : dt1 =',dt1) > print(nloop,' evaluations without sympy: dt2 =',dt2) -- https://mail.python.org/mailman/listinfo/python-list