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
-~----------~----~----~----~------~----~------~--~---

Reply via email to