Thanks! It works for me. With the trick I can print the numeric expression.
El sábado, 22 de junio de 2013 05:55:16 UTC+2, Aaron Meurer escribió: > > On Fri, Jun 21, 2013 at 5:48 PM, peibol <[email protected] <javascript:>> > wrote: > > Hi all > > > > I've been searching just to check if what I want to do is feasible with > > sympy. The thing is that I have an expression ('a/b+c/d') for which I > want > > to give several sets of values and for each set render the latex without > > evaluating it. I don't know how to avoid automatic evaluation and > > simplification. Any help would be fantastic! > > > > a,b,c,d = symbols('a b c d') > > fvars = [a,b,c,d] > > values = [1,4,2,4]; #example: 1/4+2/4 > > exp=sympify('a/b + c/d'); #here I define the algebraic expression > > res=nsimplify(exp.evalf(subs = dict(zip(fvars,values)))) #here I > get > > the result for later use > > Why don't you just use subs here? Are your typical values floats > rather than ints? > > > > > straux=urllib.quote(printing.latex(exp)) #urllib is for making the > > expression URL friendly... the thing us that latex(exp) > > #I have > tried > > exp.subs(a,1...) and eval (making a=1, b=4... and it gives 3/4, not 1/4 > + > > 2/4 > > > > strchart=' > http://chart.apis.google.com/chart?cht=tx&chs=140x50&chf=bg,s,FFFFFF00&chl=' > > > + straux > > > > Thanks! > > The classical way to get these expressions to not evaluate is to use > Add(evaluate=False). If all you care about is printing, you can use > this trick > > In [25]: (a/b + c/d).subs([(var, Symbol("%s" % i)) for var, i in > zip(fvars, values)]) > Out[25]: > 1 2 > ─ + ─ > 4 4 > > In other words, use a Symbol with the name of the function you want. > Unfortunately, this still won't preserve the input order, which is > currently impossible to do. I think for printing, though, otherwise > identical expressions are sorted alphabetically (more or less), so if > this is an issue, you could find a reliable pattern, and use the > symbol_names argument to latex(). You could also just use symbol_names > in the first place, instead of creating Symbol('1'). > > Aaron Meurer > > > > > -- > > You received this message because you are subscribed to the Google > Groups > > "sympy" group. > > To unsubscribe from this group and stop receiving emails from it, send > an > > email to [email protected] <javascript:>. > > To post to this group, send email to [email protected]<javascript:>. > > > Visit this group at http://groups.google.com/group/sympy. > > For more options, visit https://groups.google.com/groups/opt_out. > > > > > -- You received this message because you are subscribed to the Google Groups "sympy" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/sympy. For more options, visit https://groups.google.com/groups/opt_out.
