>
> Can you post here your whole code? Someone maybe figures something out
> to make it faster.
>

I am posting the relevant section of my code below.  It seems to bog
down in Poly._decompose().

#!/usr/bin/env python

from sympy import *

h = Symbol("h")
f = Symbol("f")

def kill_high_order_terms(expr, order, x):
    low_poly = 0
    p = polys.Poly(expr, x)
    for i in range(order+1):
        low_poly += x**i * p.coeff(i)

    return low_poly

def build_xy_taylor(f, order, dx, dy):
    s = 0
    for n in range(order+1):
        for k in range(n+1):
            term = binomial(n,k) * dx**(n-k) * dy**k * f[(n-k,k)] /
factorial(n)
            term = kill_high_order_terms(term, order, h)
            s += term
    return s


fx, fxx, fxxx, fxxxx = symbols("f_x f_xx f_xxx f_xxxx")
fy, fyy, fyyy, fyyyy = symbols("f_y f_yy f_yyy f_yyyy")
fxy, fxyy, fxyyy = symbols("f_xy f_xyy f_xyyy")
fxxy, fxxyy, fxxxy = symbols("f_xyy f_xxyy f_xxxy")

pf = {(0,0) : f,
      (1,0) : fx,
      (2,0) : fxx,
      (3,0) : fxxx,
      (4,0) : fxxxx,
      (1,1) : fxy,
      (1,2) : fxyy,
      (1,3) : fxyyy,
      (2,1) : fxxy,
      (2,2) : fxxyy,
      (3,1) : fxxxy,
      (0,1) : fy,
      (0,2) : fyy,
      (0,3) : fyyy,
      (0,4) : fyyyy}

half = Rational(1,2)
order = 4
k1 = f
print "Starting k2..."
k2 = build_xy_taylor(pf, order, half*h, half*h*k1)
print "Starting k3..."
k3 = build_xy_taylor(pf, order, half*h, half*h*k2)
print "Starting k3 chopping..."
k3 = kill_high_order_terms(k3, order, h)
print "Starting k4..."
k4 = build_xy_taylor(pf, order, h, h*k3)
print "Starting k4 chopping..."
k4 = kill_high_order_terms(k4, order, h)

-- 
You received this message because you are subscribed to the Google Groups 
"sympy" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/sympy?hl=en.

Reply via email to