As Brett indicated, solving numerical problems like this is generally a two step process. You must remove all floating point numbers from your input, and then use the WorkingPrecision option. In your most recent example, your input includes floating point numbers, so simply increating the WorkingPrecision is not going to suffice. Please see the following for a brief discussion on exact vs approximate (or floating point) numbers:

http://reference.wolfram.com/mathematica/tutorial/ExactAndApproximateResults.htmlEssentially, your input should not include any decimal points - fractions only.

When I made these corrections, I got an acceptable plot:

v = 1;

phi[e] = Arg[

Gamma[i]*

Exp[-I*Log[2]]/(Gamma[1/2*(v + 1) + 1/2 I]*

Gamma[1/2*(1 - (v + 1)) + 1/2 I])];

phi[o] = Arg[

Gamma[i]*

Exp[-I*Log[2]]/(Gamma[1/2*(v + 2) + 1/2 I]*

Gamma[1 - 1/2 (v + 1) + 1/2 I])];

r1 = Abs[Gamma[1/2]*Gamma[-I]*

Exp[I*Log[2]]/(Gamma[1/2 (v + 1) - 1/2 I]*

Gamma[1/2 (1 - (v + 1)) - 1/2 I])];

r2 = Abs[Gamma[3/2]*Gamma[-I]*

Exp[I*Log[2]]/(Gamma[1/2 (v + 2) - 1/2 I]*

Gamma[1 - 1/2 (v + 1) - 1/2 I])];

u1 = 2*r1*Cos[Abs[x] + phi[e]];

u2 = 2*r2*Cos[Abs[x] + phi[o]];

q = 3;

p = 3;

v = 11/10;

A = 1/2 + 1/2 I;

B = -1 + I;

Plot[{Re[(A*u1 - B*u2)*

UnitStep[-10 -

x] + (A*Cosh[x]^(v + 1)*

Hypergeometric2F1[(1/2) (v + 1 + I), (1/2) (v + 1 - I),

1/2, -Sinh[x]^2] +

B*Cosh[x]^(v + 1)*Sinh[x]*

Hypergeometric2F1[(1/2) (v + 1 + I) + (1/

2), (1/2) (v + 1 - I) + (1/2),

3/2, -Sinh[x]^2])*(UnitStep[x + 10] -

UnitStep[x - 10]) + (A*u1 + B*u2)*UnitStep[x - 10]]}, {x, -40,

40}, WorkingPrecision -> 40]