Just started looking, but I've already seen something I want to comment on. Integers and rationals are generally handled as perfect/infinite precision quantities by Mathematica. So, for example, optEXP = 20`50;
is actually less precise than just optEXP = 20;
. If you want high precision, one strategy is to stick with infinite precision as long as possible, but here you've already "corrupted" any calculations using optEXP
. [Note, obviously you may need to trade speed for precision.]
So, this:
sK = 2.46227`50;
sA = 53.401191`50;
optC = 200.0`50;
optEXP = 20`50;
wK = optC/sA^2;
could be this instead:
sK = Rationalize[2.46227`50];
sA = Rationalize[53.401191`50];
optC = 200;
optEXP = 20;
wK = optC/sA^2;
And this:
voverE[r_] := (4`30/sK)*(1`50/r^12 - 1`50/r^6) - (I*wK)*(1`50/r)^optEXP
could be this:
voverE[r_] := (4/sK)*(1/r^12 - 1/r^6) - (I*wK)*(1/r)^optEXP