Den onsdag den 30. marts 2016 kl. 13.17.33 UTC+2 skrev Poul Riis:
> Is it possible to transfer results from sympy to 'normal' python.
>
> In the case below I think my intention is clear enough but it does not work
> as intended. How can it be done?
>
> Poul Riis
>
>
>
>
> from sympy import *
> x=Symbol('x')
> ftext=diff(1/(x**2+1),x)
>
> def f(t):
> return ftext.subs(x,'t')
>
> print(f(3))
Well, cos(1) should have been cos(1.0) (which forces numerical evaluation, try
example below).
I am just trying to implement one little thing that all CAS tools can do in a
few lines, namely finding the derivative of a given function followed by
evalution of numerical values, something like:
define(fm(x),diff(f(x),x))
fm(1.0)
Sympy can find the derivative, and once that has been completed I would expect
that there is some way to find numerical values just as fast as if the
derivative had been given 'by hand'. But how exactly?
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()
for i in range(0,nloop):
a=fmsympy(1)
dt1=time()-tstart
print(a)
tstart=time()
for i in range(0,nloop):
a=fm(1.0)
dt2=time()-tstart
print(a)
print(nloop,' evaluations with sympy : dt1 =',dt1)
print(nloop,' evaluations without sympy: dt2 =',dt2)
--
https://mail.python.org/mailman/listinfo/python-list