f[x_] :=  4x^4-32x^3+89x^2-95x+29

Plot[f[x],{x,-10,10}]

We want a “better” graph than this!... in particular, we want to identify all important points with exact coordinates, and we want to know the intervals on which the function is positive/negative, increasing/decreasing, and concave up/down... Use Mathematica and calculus to help!

Solve[f[x]==0,x]

Yikes! Let’s just approximate these...

NSolve[f[x]==0,x]

Next, let’s find the zeros of f’(x) and f’’(x) -- this will tell us where the direction and concavity, respectively, of f might change...

Solve[f'[x]==0,x]

NSolve[f'[x]==0,x]

Solve[f''[x]==0,x]

NSolve[f''[x]==0,x]

We want our range of x-values to include all of the real solutions above... say, 0 to 4:

Plot[f[x],{x,0,4}]

We can identify intervals of positive/negative values, increase/decrease, and concave up/down based on prior solutions of equations. EXCEPTION: It is not clear from the above graph what is going on between x=2.5 and x≈2.579.To observe the graph’s behavior there, we need to “zoom in” on that part of the graph...

Plot[f[x],{x,2.4,2.7}]

Thus, between these two graphs, we get a complete picture of the graph’s behavior. Note that both graphs are necessary - it isn’t possible to effectively demonstrate all of the graph’s intervals of increase/decrease with just one plot.