Since you define fu
by recursion, it may be convenient to make fu
remember the values that it has already found, to avoid recalculating them over and over:
fu[p_, t_] :=
fu[p, t] = (1 -
Exp[-\[Lambda] (t - vti[[p]])]) + (PSA fu[p - 1,
vti[[p]]]) - (1 -
Exp[-\[Lambda] (t - vti[[p]])]) (PSA fu[p - 1, vti[[p]]]);