There is some information missing here, insofar as the details of what exactly is the problem are sketchy. Presumably it is as follows. We'll start with one of the functions in question.
func1 = Sqrt[-x*(2 + x)];
Here are the series formed using different assumptions about side-of-branch-cut residency status.
InputForm[s1Neg = Normal[Series[func1, {x, 0, 2},
Assumptions -> x < 0]]]
(* Out[6]//InputForm= I*Sqrt[2]*Sqrt[x] + ((I/2)*x^(3/2))/Sqrt[2] *)
InputForm[s1Pos = Normal[Series[func1, {x, 0, 2},
Assumptions -> x > 0]]]
(* Out[7]//InputForm= I*Sqrt[2]*Sqrt[x] + ((I/2)*x^(3/2))/Sqrt[2] *)
The positive one is fine, numerically.
{func1, s1Pos} /. x -> .001
(* Out[8]= {0. + 0.0447325 I, 0. + 0.0447325 I} *)
The negative part is not so fortunate.
{func1, s1Neg} /. x -> -.001
(* Out[9]= {0.0447102, -0.0447102 + 0. I} *)
Here is a result I hope to see in the next release of MathematicaMathematica.
InputForm[s1Neg = Normal[Series[func1, {x, 0, 2},
Assumptions -> x < 0]]]
(* Sqrt[2]*Sqrt[-x] + (Sqrt[-x]*x)/(2*Sqrt[2]) - (Sqrt[-x]*x^2)/(16*Sqrt[2]) *)
Numerically it is much improved.
{func1, s1Neg} /. x -> -.001
(* Out[7]= {0.0447102, 0.0447102} *)
I will mention that before Normal
is used, the SeriesData
object contains square roots of -x in its coefficients. So there are drawbacks to this, insofar as what is obtained is no longer a "pure" PuisiuxPuiseux series. I do not see a way around that though; either we extend the allowed for of result, or we have (more) branch cut errors.
The situation with ArcCos[1 + x]
is substantially the same. So the InputForm
of the expansion, for x<0x < 0
assumed, would be
Sqrt[2]*Sqrt[-x] - (Sqrt[-x]*x)/(6*Sqrt[2]) + (3*Sqrt[-x]*x^2)/(80*Sqrt[2])
Here again, the branch cut difference is handled by the explicit Sqrt[-x]
.