Re: search for an operator in an expression
- To: mathgroup at smc.vnet.net
- Subject: [mg78420] Re: [mg78103] search for an operator in an expression
- From: DrMajorBob <drmajorbob at bigfoot.com>
- Date: Sun, 1 Jul 2007 07:41:42 -0400 (EDT)
- References: <59219.1182598370249.JavaMail.root@m35>
- Reply-to: drmajorbob at bigfoot.com
Here's an attempt, with (perhaps) counterintuitive results: expr=Sin[x]Sin[x^3+x]//TrigExpand Cos[x^3]/2-1/2 Cos[x]^2 Cos[x^3]+1/2 Cos[x^3] Sin[x]^2+Cos[x] Sin[x] Sin[x^3] expr//FullForm Plus[Times[Rational[1,2],Cos[Power[x,3]]],Times[Rational[-1,2],Power[Cos[x],2],Cos[Power[x,3]]],Times[Rational[1,2],Cos[Power[x,3]],Power[Sin[x],2]],Times[Cos[x],Sin[x],Sin[Power[x,3]]]] Count[expr,Plus[__]] 4 Cases[expr, Plus[__]] {Cos[x^3]/2, -1/2 Cos[x]^2 Cos[x^3], 1/2 Cos[x^3] Sin[x]^2, Cos[x] Sin[x] Sin[x^3]} The FullForm contains a single Plus with four arguments, which I'd normally think of as three additions. But Count and Cases find four instances of Plus. But wait... there's even more! Cases[expr, Plus[__], Infinity] {1/2, x, 3, x^3, Cos[x^3], Cos[x^3]/2, -1/2, x, Cos[x], 2, Cos[x]^2, x, 3, x^3, Cos[x^3], -1/2 Cos[x]^2 Cos[x^3], 1/2, x, 3, x^3, Cos[x^3], x, Sin[x], 2, Sin[x]^2, 1/2 Cos[x^3] Sin[x]^2, x, Cos[x], x, Sin[x], x, 3, x^3, Sin[x^3], Cos[x] Sin[x] Sin[x^3]} Count[expr, Plus[__], Infinity] 35 But there's also THIS: StringCount[expr // FullForm // ToString, "Plus"] 1 or this: StringCount[expr // ToString, "+"] 2 Take your pick!! Bobby On Sat, 23 Jun 2007 06:03:04 -0500, Daniel <danielmaxin at yahoo.com> wrote: > Is there a way to search for an operator in a symbolic expression? My > wish is to show that there is only "+" in a very large expression. > Rather than showing an expression on multiple pages I would like to > perform a search that shows there is only "+" between the terms. > Converting to a string does not seem to work since the expression is > written on multiple lines(fractions, exponents etc..) > > Thanks > > -- DrMajorBob at bigfoot.com