Re: Re: Simplify with NestedLessLess?
- To: mathgroup at smc.vnet.net
- Subject: [mg106602] Re: [mg106531] Re: [mg106487] Simplify with NestedLessLess?
- From: Dave Bird <dbird at ieee.org>
- Date: Mon, 18 Jan 2010 02:34:21 -0500 (EST)
- References: <201001141049.FAA19892@smc.vnet.net> <4B4F39E7.1070002@wolfram.com> <4B4FAC81.7000108@ieee.org> <4B4FB26F.7050702@wolfram.com> <201001150821.DAA29881@smc.vnet.net> <op.u6k8eysrtgfoz2@bobbys-imac.local> <4B5215AE.6020402@ieee.org> <op.u6niq5nhtgfoz2@bobbys-imac.local> <4B527F72.9010000@ieee.org> <op.u6nuvknatgfoz2@bobbys-imac.local> <op.u6nvhla9tgfoz2@bobbys-imac.local>
- Reply-to: dbird at ieee.org
This works for the test expression, obviously. But, can it be made to work for a more complex expression containing say a radical? I don't understand it well enough to critique at this point; I'll have to study it more tomorrow. Thanks, Dave DrMajorBob wrote: > Oops... Normal was extraneous there. I had another solution using > Series, but I switched to Limit. > > Clear[h] > h[expr_] /; FreeQ[expr, C] || FreeQ[expr, Cf] := expr > h[expr_] := Limit[expr /. C -> delta Cf, delta -> 0] > > expr = -Cf^2 L2^2 Rg^2 Vg^4 + > 3 (4 C Rg^2 Vd^2 + 4 Cf Rg^2 Vd^2 + 2 C Rg^2 Vd Vg); > vars = Complement[Variables@expr, {C, Cf}]; > Collect[expr, vars, h] > > -Cf^2 L2^2 Rg^2 Vg^4 + Rg^2 (12 Cf Vd^2 + 6 C Vd Vg) > > Bobby > > On Sat, 16 Jan 2010 23:00:46 -0600, DrMajorBob <btreat1 at austin.rr.com> > wrote: > >>> Vg is potentially much larger than Vd (last two terms). In other >>> words, the magnitude of Vd, Vg and L2 could conspire together to >>> make the last term significant even though C<<Cf. >> >> The same can be said for ANY term you want to ignore, can it not? >> >> But never mind; I think you want to apply the technique I just showed >> you, but only to individual coefficients in >> >> Collect[-Cf^2 L2^2 Rg^2 Vg^4 + >> 3 (4 C Rg^2 Vd^2 + 4 Cf Rg^2 Vd^2 + 2 C Rg^2 Vd Vg), {L2, Rg, Vg}] >> >> -Cf^2 L2^2 Rg^2 Vg^4 + Rg^2 (12 C Vd^2 + 12 Cf Vd^2 + 6 C Vd Vg) >> >> ...but ONLY if C and Cf both appear in the same coefficient. >> >> That's a strange set of conditions, in my opinion, but here's a way >> to do it: >> >> Clear[h] >> h[expr_] /; FreeQ[expr, C] || FreeQ[expr, Cf] := expr >> h[expr_] := Normal[Limit[expr /. C -> delta Cf, delta -> 0]] >> >> expr = -Cf^2 L2^2 Rg^2 Vg^4 + >> 3 (4 C Rg^2 Vd^2 + 4 Cf Rg^2 Vd^2 + 2 C Rg^2 Vd Vg); >> vars = Complement[Variables@expr, {C, Cf}]; >> Collect[expr, vars, h] >> >> -Cf^2 L2^2 Rg^2 Vg^4 + Rg^2 (12 Cf Vd^2 + 6 C Vd Vg) >> >> % == -Cf^2 L2^2 Rg^2 Vg^4 + >> 3 (4 Cf Rg^2 Vd^2 + 2 C Rg^2 Vd Vg) // Simplify >> >> True >> >> Bobby >> >> On Sat, 16 Jan 2010 21:09:38 -0600, Dave Bird <dbird at ieee.org> wrote: >> >>> Yes, but when we make delta->0 we eliminate _all_ C terms, thus >>> missing the correct answer of >>> >>> -Cf^2 L2^2 Rg^2 Vg^4+3 (4 Cf Rg^2 Vd^2+2 C Rg^2 Vd Vg) >>> >>> Vg is potentially much larger than Vd (last two terms). In other >>> words, the magnitude of Vd, Vg and L2 could conspire together to >>> make the last term significant even though C<<Cf. >>> >>> Dave >>> >>> DrMajorBob wrote: >>>> You said C<<Cf, so let's say C = delta CF, where delta is small. We >>>> compute a series around delta=0 and, after giving it a look, we set >>>> delta = 0. >>>> >>>> expr = >>>> Normal@Series[-Cf^2 L2^2 Rg^2 Vg^4 + >>>> 3 (4 C Rg^2 Vd^2 + 4 Cf Rg^2 Vd^2 + 2 C Rg^2 Vd Vg) /. >>>> C -> delta Cf, {delta, 0, 6}] >>>> firstTry = expr /. delta -> 0 >>>> >>>> 12 Cf Rg^2 Vd^2 - Cf^2 L2^2 Rg^2 Vg^4 + >>>> delta (12 Cf Rg^2 Vd^2 + 6 Cf Rg^2 Vd Vg) >>>> >>>> 12 Cf Rg^2 Vd^2 - Cf^2 L2^2 Rg^2 Vg^4 >>>> >>>> In a more complicated situation (if a few Series terms were >>>> unconvincing), we might use Limit, instead: >>>> >>>> expr = -Cf^2 L2^2 Rg^2 Vg^4 + >>>> 3 (4 C Rg^2 Vd^2 + 4 Cf Rg^2 Vd^2 + 2 C Rg^2 Vd Vg) /. C -> >>>> delta Cf >>>> secondTry = Limit[expr, delta -> 0] >>>> >>>> -Cf^2 L2^2 Rg^2 Vg^4 + >>>> 3 (4 Cf Rg^2 Vd^2 + 4 Cf delta Rg^2 Vd^2 + 2 Cf delta Rg^2 Vd Vg) >>>> >>>> Cf Rg^2 (12 Vd^2 - Cf L2^2 Vg^4) >>>> >>>> In this case, both answers are the same: >>>> >>>> firstTry == secondTry // Simplify >>>> >>>> True >>>> >>>> Bobby >>>> >>>> On Sat, 16 Jan 2010 13:38:22 -0600, Dave Bird <dbird at ieee.org> wrote: >>>> >>>>> Interesting! But, I don't think I am correctly communicating what >>>>> I'm after yet. (Although, I admit that I am struggling some to >>>>> keep up with you guys in your Mathematica replies due to my >>>>> inexperience.) >>>>> >>>>> The original expression that I put up for illustration is: >>>>> >>>>> -Cf^2 L2^2 Rg^2 Vg^4+3 (4 C Rg^2 Vd^2+4 Cf Rg^2 Vd^2+2 C Rg^2 Vd Vg) >>>>> >>>>> We compare 4 C Rg^2 Vd^2 to 4 Cf Rg^2 Vd^2 because the two terms >>>>> share common coefficients so that they "reduce" to (4 Rg^2 Vd^2+4 >>>>> Rg^2 Vd^2) (C+Cf) . Thus it becomes obvious that C may be >>>>> discarded w.r.t. Cf. >>>>> >>>>> Please forgive if I have missed the correct application of your >>>>> suggestion, and thanks for the interest. >>>>> >>>>> Dave >>>>> >>>>> DrMajorBob wrote: >>>>>> Series[-Cf^2 L2^2 Rg^2 Vg^4 + >>>>>> 3 (4 C Rg^2 Vd^2 + 4 Cf Rg^2 Vd^2 + 2 C Rg^2 Vd Vg), {C, 0, >>>>>> 5}] // Simplify >>>>>> >>>>>> SeriesData[C, 0, { >>>>>> Cf Rg^2 (12 Vd^2 - Cf L2^2 Vg^4), 6 Rg^2 Vd (2 Vd + Vg)}, 0, 6, 1] >>>>>> >>>>>> Bobby >>>>>> >>>>>> On Fri, 15 Jan 2010 02:21:09 -0600, Dave Bird <dbird at ieee.org> >>>>>> wrote: >>>>>> >>>>>>> Not infinitesimals. I'm working in analog circuit >>>>>>> design/analysis. I >>>>>>> have a 3 pole symbolic circuit response (third order) which is not >>>>>>> easily separable. I can use Mathematica to find the three roots >>>>>>> of the >>>>>>> response. But, the roots are, of course, very messy. I know that >>>>>>> certain >>>>>>> elements in the circuit are orders of magnitude larger than >>>>>>> other like >>>>>>> elements - capacitors in this case. For example, one small >>>>>>> section of >>>>>>> one root is >>>>>>> >>>>>>> -Cf^2 L2^2 Rg^2 Vg^4+3 (4 C Rg^2 Vd^2+4 Cf Rg^2 Vd^2+2 C Rg^2 Vd >>>>>>> Vg) >>>>>>> >>>>>>> I know that C<<Cf. By careful inspection, I can see that the >>>>>>> first term >>>>>>> in the parens will drop out compared to the second term in the >>>>>>> parens. I >>>>>>> would like Mathematica to do this without my having to examine >>>>>>> it so >>>>>>> closely since there are many other like situations. >>>>>>> >>>>>>> This kind of situation occurs in many other engineering situations. >>>>>>> >>>>>>> Hope this helps clarify. >>>>>>> >>>>>>> Thanks for the interest. >>>>>>> >>>>>>> Dave >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> Daniel Lichtblau wrote: >>>>>>>> Dave Bird wrote: >>>>>>>>> Thanks Daniel for the observation. I forgot to add that both >>>>>>>>> a, and b >>>>>>>>> are real positive. That, of course would have to be added to the >>>>>>>>> assumptions. >>>>>>>>> >>>>>>>>> Dave >>>>>>>> >>>>>>>> It's still not obvious what you are wanting to do. I have the >>>>>>>> idea you >>>>>>>> are working in some sense with infinitesmals. If so, I doubt >>>>>>>> Simplify >>>>>>>> would be the best tool for removing them; it really can only do >>>>>>>> that >>>>>>>> if it is told, in some way, to replace them with zero. How >>>>>>>> might one >>>>>>>> instruct Simplify to figure that out? >>>>>>>> >>>>>>>> Daniel >>>>>>>> >>>>>>>> >>>>>>>>> Daniel Lichtblau wrote: >>>>>>>>>> dbird wrote: >>>>>>>>>>> Please excuse if this has been answered before, but I can't >>>>>>>>>>> find it. >>>>>>>>>>> >>>>>>>>>>> Is there some way to do a Simplify with assumptions using a >>>>>>>>>>> NestedLessLess or something similar? For example: >>>>>>>>>>> >>>>>>>>>>> d=a+b >>>>>>>>>>> Simplify[d,NestedLessLess[a,b]] >>>>>>>>>>> >>>>>>>>>>> Answer is: >>>>>>>>>>> a+b >>>>>>>>>>> >>>>>>>>>>> Answer should be: >>>>>>>>>>> b >>>>>>>>>>> >>>>>>>>>>> Thanks, >>>>>>>>>>> >>>>>>>>>>> Dave >>>>>>>>>> >>>>>>>>>> I fail to see why the result should be b. >>>>>>>>>> >>>>>>>>>> Daniel Lichtblau >>>>>>>>>> Wolfram Research >>>>>>>>>> >>>>>>>>>> >>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>>> >>>> >>>> >> >> > >
- References:
- Simplify with NestedLessLess?
- From: dbird <dbird@ieee.org>
- Re: Simplify with NestedLessLess?
- From: Dave Bird <dbird@ieee.org>
- Simplify with NestedLessLess?