On Apr 24, 2009, at 11:55 PM, Eric wrote: > Hello, > > I need to be able to evaluate an expression, where the expression is > composed of dynamically generated variables. For example, I might have > a list "var_list", a list "data_list", and an expression "exprssn". > Here > 1) var_list is a list of variables, where every element in var_list > was created using sage.calculus.calculus.var > 2) data_list is a list of real numbers > 3) exprssn is an expression, where every variable comes from var_list > > How would I evaluate exprssn when the variable var_list[i] takes the > value data_list[i]? If I try something like exprssn(var_list[i] = > data_list[i]) I get an error. > > My current solution involves string generation coupled with eval > statements and is horribly clunky. What is the right way to do this?
How about this: sage: var_list = var('x,y,z') sage: data_list = [2,3,5] sage: f = x^3 - y*z sage: f.subs(dict(zip(var_list, data_list))) -7 The "zip" command takes two lists, and "zips" them together. The dict can take a list of 2-tuples as a constructor. sage: zip(var_list, data_list) [(x, 2), (y, 3), (z, 5)] sage: dict(zip(var_list, data_list)) {y: 3, x: 2, z: 5} - Robert --~--~---------~--~----~------------~-------~--~----~ To post to this group, send email to sage-support@googlegroups.com To unsubscribe from this group, send email to sage-support-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-support URLs: http://www.sagemath.org -~----------~----~----~----~------~----~------~--~---