Re: Unevaluated values of a[[i]]+b[[j]]
- To: mathgroup at smc.vnet.net
- Subject: [mg65234] Re: Unevaluated values of a[[i]]+b[[j]]
- From: albert <awnl at arcor.de>
- Date: Sun, 19 Mar 2006 03:19:10 -0500 (EST)
- References: <dvgs5h$9oc$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Alexandre Costa wrote: > Dear group, > Suppose a have a = {3,4,4} and b = {4,3,8}. > I want to see the Unevaluated numerics values of a[[i]]*b[[j]], > a[[i]]+b[[j]], a[[i]]/b[[j]], a[[i]] - b[[j]]. > > The NonCommutativeMultiply operator (**) solves the case of > a[[i]]*b[[j]]. But suppose I want to extend that NonCommutativeMultiply > operator (**) to others operations: +, -, / , i.e., see the Unevaluated > numeric values of a[[i]]+b[[j]], a[[i]]/b[[j]], a[[i]] - b[[j]]. Does > anybody have a clue how to do this ? > > Suppose I have the expression for the roots of the quadratic equation: - > b[[index]]^2 + Sqrt[delta]/2*a[[index]] > How can I see at once all the numeric values unevaluated on that > expression. > > In short words, I have lenghtly expressions(with > sums,subtraction,divisions and multiplications and powers) and I want to > check each numeric value of each term in the original unevaluated formula > containing elements such as a[[index]] . I was thinking in a operator or > function to solve all this issue. Any help is very welcome, > Thanks, > Alex Here is what I can offer, it's neither optimized for speed nor elegance, but it does what I think you want in a rather straightforward way by replacing the parts you want to see evaluated. You might want to improve on this: SetAttributes[ShowNumericSymbolsEvaluated, HoldFirst] ShowNumericSymbolsEvaluated[expr_] := Module[{eee, numbers}, eee = HoldForm[expr]; positions = Position[eee,x_Symbol /; NumericQ[x]]; Scan[ (eee = ReplacePart[eee, eee[[Sequence @@ #1]], #1]) & , positions ]; eee ]; Now: In[22]:= ShowNumericSymbolsEvaluated[ b[[index]]^2 +(Sqrt[delta]/2)*a[[index]] ] Out[22]= HoldForm[b[[3]]^2 + (1/2)*Sqrt[0.2]*a[[3]]] (the HoldForm is not shown when working in the FrontEnd) If you want to also see the list-entries evaluated use this: SetAttributes[ShowNumericSymbolsEvaluatedEvenMore, HoldFirst] ShowNumericSymbolsEvaluatedEvenMore[expr_] := Module[{eee, numbers}, eee = ShowNumericSymbolsEvaluated[expr]; positions = Position[eee, HoldPattern[ (x_Symbol)[[i___Integer]] /; NumericQ[x[[i]]]] ]; Scan[ (eee = ReplacePart[eee, eee[[Sequence @@ #1]], #1]) & , positions ]; eee ] In[23]:= ShowNumericSymbolsEvaluatedEvenMore[ b[[index]]^2 +(Sqrt[delta]/2)*a[[index]] ] Out[23] = HoldForm[0.3^2 + (Sqrt[0.2]*0.3)/2] hth, albert