Avoid issue when differentiating Green's function

So I’m trying to plot my Green’s function derivative using the following code:

n = 3;    
G[x_, xx_] := -1/(2 n) If[x < xx, x^n xx^-n, xx^n x^-n];
DG[x_, xx_] := D[G[x, xx], x];
Plot[DG[x, 0.3], {x, 0, 1}]

While Plot[G] works, trying to plot its derivative gives me some weird errors:

5J4y12h.png

What’s wrong with my code?

What is n?

n can be any real number greater than 2, forgot to initialize it.

The problem is caused by using SetDelayed in the definition of DG. The derivative is not evaluated until it is used, and when it is, it is a derivative with respect to a constant x. So, either use Set in the definition of DG or force evaluation prior to use.

Plot[Evaluate@DG[x, 0.3], {x, 0, 1}, Exclusions -> None]

If[] is a programming construct. It is not designed to play well with symbolic mathematics. Use Piecewise instead.