smirch Thanks for the tip, Your suggested strin manipulations along with the exec function seem to work for a simple case.
Cheers Scott On Feb 1, 4:57 pm, smichr <[email protected]> wrote: > Along the lambda lines is this suggestion: > > >>> from sympy import * > >>> def myfun(x, params): > > ... a, b = params > ... return x**2 + Rational(a, b) > ...>>> params=[1,2] > >>> f = lambda x: myfun(x, p) > >>> f(1) > 3/2 > >>> params=[3,5] > >>> f(1) > > 8/5 > > On Feb 1, 8:30 am, Scott <[email protected]> wrote: > > > Is there a clever way to get from F4 to F5 other than cutting and > > pasting? > > Let python emit the function for you? > > >>> def emit(globs, params): > > ... sg = str(globs) > ... sp = str(params) > ... return 'def F5%s:\n\tglobal %s\n\targs=tuple(dofl)[:-cons]+%s+%s\n > \treturn F3(*args)' % (sp, sg[1:-1], sg, sp) > ... > > >>> f5=emit(globs, params) > >>> exec f5 # you now have F5 in your namespace > > I can say more if this looks like what you want. After the exec line > you have a function named F5 ready to use, i.e. you could pass F5 to a > solver: > > >>> sympy.mpmath.findroot(F5,list(dof1)) > > etc... > > BTW, I don't see where you've defined `cons` -- 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.
