Why do this manually, and not just use `leastsq` to determine initial values?