A very good approximation of the trapezoid top width could be had using a version the "divide and conquer" method described above. This method would not require any simplification of the shape, but would require a bunch of python code, and it assumes that you have a shape that is somewhere in between a rectangle and a triangle (e.g. an elongated trapezoid).
We've already demonstrated that it's pretty easy to get the length of the bottom width edge, and the constituent coordinates of it... The idea then (somewhat similar to the one presented above), would be to derive the minimum convex rectangle, and then construct a series of line bisectors (the more bisectors the better approximation) where the bisectors are at equal increments, say 1% increments, from the right most (or left most) end of the rectangle - we'll call that the "origin" end. The method then would be to "clip" the bisector lines to the trapezoid polygon and then examine the resulting lengths as a function of the distance from the origin end... The linear regression of these lengths/increment distances would then describe the tapper of the trapezoid, and thus, knowing the tapper equation and the rectangle length , you could then estimate an approximate width of the top end of the trapezoid.