Mathematica Collecting denominators together with Mathematica

  • Thread starter Thread starter anthony2005
  • Start date Start date
  • Tags Tags
    Mathematica
AI Thread Summary
The discussion centers on simplifying a long sum of rational functions into a more manageable form. The original expression consists of multiple fractions with common and distinct denominators. The user seeks a method to group terms based on their denominators without resorting to a single common denominator, which would complicate the expression and slow down processing time. A solution is provided using Mathematica, where the Plus and Map functions are employed to group terms by their denominators efficiently. This method successfully consolidates the fractions into the desired format, demonstrating a robust approach to handling complex rational functions. The user expresses appreciation for the solution and acknowledges the educational value of understanding the underlying mechanics. Additionally, an alternative method using the Collect function is mentioned, but the mapping technique is favored for its effectiveness and reliability.
anthony2005
Messages
24
Reaction score
0
Hi all,
I have a very simple issue, but can't get round of it.

I have a long sum of rational functions, which is in the form for example

\frac{n_{1}}{d_{1}}+\frac{n_{2}}{d_{1}}+\frac{n_{3}}{d_{1}}+\frac{n_{4}}{d_{1}}+\frac{n_{5}}{d_{2}}+\frac{n_{6}}{d_{2}}+\frac{n_{7}}{d_{1}\cdot d_{2}}+\frac{n_{8}}{d_{1}\cdot d_{2}}+\frac{n_{9}}{d_{1}\cdot d_{2}}

and I would like to put it in the form

\frac{n_{1}+n_{2}+n_{3}+n_{4}}{d_{1}}+\frac{n_{5}+n_{6}}{d_{2}}+\frac{n_{7}+n_{8}+n_{9}}{d_{1}\cdot d_{2}}

If I use Factor or Simplify it would just put all over one single denominator d_{1}\cdot d_{2}, taking also so much time since my expression is huge.

Any help?
Thanks
 
Physics news on Phys.org
Figuring out how and why this works will be an educational experience.

In[1]:= f=n1/d1+n2/d1+n3/d1+n4/d1+n5/d2+n6/d2+n7/(d1 d2)+n8/(d1 d2)+n9/(d1 d2);

In[2]:= Plus@@Map[Together[Select[f,Function[x, Denominator[x]==#]]]&,Union[Map[ Denominator,List@@f]]]

Out[2]= (n1 + n2 + n3 + n4)/d1 + (n5 + n6)/d2 + (n7 + n8 + n9)/(d1*d2)

Be careful with that, just in case some oddball input breaks it.
 
Wow, it worked. Miracles are hidden in mathematica, but I'll figure out why it worked.
Thanks a lot.
 
I always find ways to use Collect and get it to look right myself.

Collect[f /. {1/(d1*d2) -> 1/d1d2}, {d1, d2, d1d2}] /. d1d2 -> d1 d2

but the way above with mapping is much better and more robust.
 
Back
Top