Skip to main content
Add another approach
Source Link
Carl Woll
  • 132.8k
  • 6
  • 254
  • 366

I likeHere are two approaches using DeleteCases for tasks like this because the head of the expression is maintained. SoFreeQ:

DeleteCases:

DeleteCases[expr, s_ /; FreeQ[s, Alternatives @@ keep]]

(n1 q)/(2 n3 (r + s)^4) - s^4/(2 n2 n4 r (r - s) (r + s)^3) - (n1 q)/( 2 n2 (-r + s) (r + s)^3) - (n2 q)/(2 n1 (-r + s) (r + s)^3) - (n2 q)/( n3 (-r + s) (r + s)^3) + (n2^2 q)/(2 n1 n3 (-r + s) (r + s)^3) - (n1^2 q^2)/( 8 n2n3 r (-r + s) (r + s)^3) + (3 n1 q^2)/(8 n3 r (-r + s) (r + s)^3) - ( 3 n2 q^2)/(8 n3 r (-r + s) (r + s)^3) + (n2^2 q^2)/( 8 n1 n3 r (-r + s) (r + s)^3)

Select:

Select[expr, Not @* FreeQ[Alternatives @@ keep]]

(n1 q)/(2 n3 (r + s)^4) - s^4/(2 n2 n4 r (r - s) (r + s)^3) - (n1 q)/( 2 n2 (-r + s) (r + s)^3) - (n2 q)/(2 n1 (-r + s) (r + s)^3) - (n2 q)/( n3 (-r + s) (r + s)^3) + (n2^2 q)/(2 n1 n3 (-r + s) (r + s)^3) - (n1^2 q^2)/( 8 n2n3 r (-r + s) (r + s)^3) + (3 n1 q^2)/(8 n3 r (-r + s) (r + s)^3) - ( 3 n2 q^2)/(8 n3 r (-r + s) (r + s)^3) + (n2^2 q^2)/( 8 n1 n3 r (-r + s) (r + s)^3)

I like using DeleteCases for tasks like this because the head of the expression is maintained. So:

DeleteCases[expr, s_ /; FreeQ[s, Alternatives @@ keep]]

(n1 q)/(2 n3 (r + s)^4) - s^4/(2 n2 n4 r (r - s) (r + s)^3) - (n1 q)/( 2 n2 (-r + s) (r + s)^3) - (n2 q)/(2 n1 (-r + s) (r + s)^3) - (n2 q)/( n3 (-r + s) (r + s)^3) + (n2^2 q)/(2 n1 n3 (-r + s) (r + s)^3) - (n1^2 q^2)/( 8 n2n3 r (-r + s) (r + s)^3) + (3 n1 q^2)/(8 n3 r (-r + s) (r + s)^3) - ( 3 n2 q^2)/(8 n3 r (-r + s) (r + s)^3) + (n2^2 q^2)/( 8 n1 n3 r (-r + s) (r + s)^3)

Here are two approaches using FreeQ:

DeleteCases:

DeleteCases[expr, s_ /; FreeQ[s, Alternatives @@ keep]]

(n1 q)/(2 n3 (r + s)^4) - s^4/(2 n2 n4 r (r - s) (r + s)^3) - (n1 q)/( 2 n2 (-r + s) (r + s)^3) - (n2 q)/(2 n1 (-r + s) (r + s)^3) - (n2 q)/( n3 (-r + s) (r + s)^3) + (n2^2 q)/(2 n1 n3 (-r + s) (r + s)^3) - (n1^2 q^2)/( 8 n2n3 r (-r + s) (r + s)^3) + (3 n1 q^2)/(8 n3 r (-r + s) (r + s)^3) - ( 3 n2 q^2)/(8 n3 r (-r + s) (r + s)^3) + (n2^2 q^2)/( 8 n1 n3 r (-r + s) (r + s)^3)

Select:

Select[expr, Not @* FreeQ[Alternatives @@ keep]]

(n1 q)/(2 n3 (r + s)^4) - s^4/(2 n2 n4 r (r - s) (r + s)^3) - (n1 q)/( 2 n2 (-r + s) (r + s)^3) - (n2 q)/(2 n1 (-r + s) (r + s)^3) - (n2 q)/( n3 (-r + s) (r + s)^3) + (n2^2 q)/(2 n1 n3 (-r + s) (r + s)^3) - (n1^2 q^2)/( 8 n2n3 r (-r + s) (r + s)^3) + (3 n1 q^2)/(8 n3 r (-r + s) (r + s)^3) - ( 3 n2 q^2)/(8 n3 r (-r + s) (r + s)^3) + (n2^2 q^2)/( 8 n1 n3 r (-r + s) (r + s)^3)

Source Link
Carl Woll
  • 132.8k
  • 6
  • 254
  • 366

I like using DeleteCases for tasks like this because the head of the expression is maintained. So:

DeleteCases[expr, s_ /; FreeQ[s, Alternatives @@ keep]]

(n1 q)/(2 n3 (r + s)^4) - s^4/(2 n2 n4 r (r - s) (r + s)^3) - (n1 q)/( 2 n2 (-r + s) (r + s)^3) - (n2 q)/(2 n1 (-r + s) (r + s)^3) - (n2 q)/( n3 (-r + s) (r + s)^3) + (n2^2 q)/(2 n1 n3 (-r + s) (r + s)^3) - (n1^2 q^2)/( 8 n2n3 r (-r + s) (r + s)^3) + (3 n1 q^2)/(8 n3 r (-r + s) (r + s)^3) - ( 3 n2 q^2)/(8 n3 r (-r + s) (r + s)^3) + (n2^2 q^2)/( 8 n1 n3 r (-r + s) (r + s)^3)