<< 
      Graphics`Colors`
Off[
        General::"spell1"];
Off[
        General::"spell"];
MakeDataBarsOnly[dataTable_]:=Module[
{n, x = dataTable[[All, 1]], 
              y = dataTable[[All, 2]], maxY, minY, bars, edges, 
              prettyBars, points = dataTable}, 
n = 
              Length[x]; 
If[Max[y] > 0, maxY = Max[y], 
              maxY = 0]; 
If[Min[y] < 0, minY = Min[y], 
              minY = 0]; 
bars = 
              List[]; 
Do[
              bars = Append[bars, 
                  Graphics[{GrayLevel[0.9], 
                      Rectangle[{x[[j - 1]], 0}, {x[[j]], 
                          y[[j - 1]]}]}]], {j, 2, 
                n}]; 
edges = List[]; 
Do[
              edges = Append[edges, 
                  Graphics[{GrayLevel[0.7], 
                      Line[{{x[[j]], 0}, {x[[j]], 
                            y[[j]]}, {x[[j + 1]], 
                            y[[j]]}, {x[[j + 1]], 0}}]}]], {j, 1, 
                n - 1}]; 
prettyBars = 
              Join[bars, edges]; 
dots = 
              ListPlot[points, PlotStyle -> {PointSize[0.02]}, 
                DisplayFunction -> Identity]; 
Return[
              Show[{prettyBars, dots}, Axes -> True, 
                AxesOrigin -> {x[[1]], 0}, 
                DisplayFunction -> $DisplayFunction, 
                PlotRange -> {minY, maxY}]];
];
MakeDataBars[dataTable_, yhat_] := 
          Module[
{n, x = dataTable[[All, 1]], 
              y = dataTable[[All, 2]], bars, edges, prettyBars, 
              points = dataTable}, 
n = 
              Length[x]; 
bars = 
              List[]; 
Do[
              bars = Append[bars, 
                  Graphics[{GrayLevel[0.9], 
                      Rectangle[{x[[j - 1]], 0}, {x[[j]], 
                          y[[j - 1]]}]}]], {j, 2, 
                n}]; 
edges = List[]; 
Do[
              edges = Append[edges, 
                  Graphics[{GrayLevel[0.7], 
                      Line[{{x[[j]], 0}, {x[[j]], 
                            y[[j]]}, {x[[j + 1]], 
                            y[[j]]}, {x[[j + 1]], 0}}]}]], {j, 1, 
                n - 1}]; 
prettyBars = 
              Join[bars, edges]; 
dots = 
              ListPlot[points, PlotStyle -> {AbsolutePointSize[10]}, 
                DisplayFunction -> Identity]; 
curve = 
              Plot[yhat[t], {t, Min[x], Max[x]}, 
                DisplayFunction -> Identity]; 
Return[
              Show[{prettyBars, dots, curve}, Axes -> True, 
                AxesOrigin -> {x[[1]], 0}, 
                DisplayFunction -> $DisplayFunction]];
];
MakeRiemannBars[f_, xPartition_] := 
          Module[
{n, x = xPartition, y, minY, maxY, bars, 
              edges, prettyBars, points = dataTable}, 
y = 
              f[x]; 
If[Max[y] > 0, maxY = Max[y], 
              maxY = 0]; 
If[Min[y] < 0, minY = Min[y], 
              minY = 0]; 
n = 
              Length[x]; 
bars = 
              List[]; 
Do[
              bars = Append[bars, 
                  Graphics[{GrayLevel[0.9], 
                      Rectangle[{x[[j - 1]], 0}, {x[[j]], 
                          y[[j - 1]]}]}]], {j, 2, 
                n}]; 
edges = List[]; 
Do[
              edges = Append[edges, 
                  Graphics[{GrayLevel[0.7], 
                      Line[{{x[[j]], 0}, {x[[j]], 
                            y[[j]]}, {x[[j + 1]], 
                            y[[j]]}, {x[[j + 1]], 0}}]}]], {j, 1, 
                n - 1}]; 
prettyBars = 
              Join[bars, edges]; 
curve = 
              Plot[f[t], {t, Min[x], Max[x]}, 
                DisplayFunction -> Identity]; 
Return[
              Show[{prettyBars, curve}, Axes -> True, 
                AxesOrigin -> {x[[1]], 0}, 
                DisplayFunction -> $DisplayFunction, 
                PlotRange -> {minY, maxY}]];
];

Enter Data

data = {{0, 20.4}, {0.1,  20.3}, {0.2,  19.4}, {0.3,  
            17.3}, {0.4,  14.0}, {0.5,  9.8}, {0.6,  5.3}, {0.7,  
            1.6}, {0.8,  0}};

Plot the data

\(\(p1 = 
        ListPlot[
          data, 
PlotStyle -> {Blue, 
              PointSize[
                0.02]}, 
AxesLabel -> {"Time (s)", \*""Acc (m/(s^2))""}, 
PlotLabel -> "Acceleration", 
TextStyle -> {FontSize -> 
                18}];\)\)

Define the model

model[t_, a_, b_, c_, d_] = a t^3 + b t^2 + c t + d;

Use the total distance function V2

V2[a_, b_, c_, d_] = 
        Sqrt[
(20.4  - model[0, a, b, c, d])^2 + ( 
                20.3 - model[0.1, a, b, c, d])^2 + 
( 
                19.4 - model[0.2, a, b, c, d])^2 + ( 
                17.3 - model[0.3, a, b, c, d])^2 + 
( 
                14.0 - model[0.4, a, b, c, d])^2 + ( 
                9.8 - model[0.5, a, b, c, d])^2 + 
( 
                5.3 - model[0.6, a, b, c, d])^2 + (1.6  - 
                  model[0.7, a, b, c, d])^2 + 
(0.0  - 
                  model[0.8, a, b, c, d])^2];

diffV2a[a_, b_, c_, d_] = 
        D[V2[a, b, c, d], a];
diffV2b[a_, b_, c_, d_] = 
        D[V2[a, b, c, d], b];
diffV2c[a_, b_, c_, d_] = 
        D[V2[a, b, c, d], c];
diffV2d[a_, b_, c_, d_] = D[V2[a, b, c, d], d];

Solve[{
diffV2a[a, b, c, d] == 
          0, 
diffV2b[a, b, c, d] == 
          0, 
diffV2c[a, b, c, d] == 
          0, 
diffV2d[a, b, c, d] == 0}, {a, b, c, 
        d}]

aa = 80.89225589228327`;
bb = -120.20923520926924`;
cc = 18.89381914383003`;
dd = 20.052525252524667`;

acc[t_] = 
        aa*t^3 + bb*t^2  +  cc*t  +  dd;
p2 = 
        Plot[acc[t], {t, 0.0, 1}, PlotStyle -> {Red}, 
          DisplayFunction -> Identity];
Show[{p1, p2}, 
        DisplayFunction -> $DisplayFunction];

If Solve does not work, then it will be necessary to find estimates for the parameters and this is done by finding an exact fit to four data points

Solve[{
model[0, a, b, c, d] == 
          20.4, 
model[0.3, a, b, c, d] == 
          17.3, 
model[0.5, a, b, c, d] == 
          9.8, 
model[0.8, a, b, c, d] == 0}, {a, b, c, 
        d}]

Then use these values as estimates when finding the location of the critical point

FindRoot[{
diffV2a[a, b, c, d] == 
          0, 
diffV2b[a, b, c, d] == 
          0, 
diffV2c[a, b, c, d] == 
          0, 
diffV2d[a, b, c, d] == 0}, {a, 
        80}, {b, -118}, {c, 18}, {d, 20}]