Just for fun with PSTricks. I made it before someone edited the question title.

\documentclass[pstricks,border={2pt 2pt 14pt 14pt}]{standalone}
\usepackage{pst-eucl}
\usepackage{pst-plot}
\def\f(#1){#1 2 sub 2 exp 2 mul 9 div 1 add}
\def\g(#1){#1 2.5 div 1 add}
\begin{document}
\begin{pspicture}(-3,-1)(6,4)
\psaxes[labels=none,ticks=none]{->}(0,0)(-3,-1)(6,4)[$x$,0][$y$,90]
\psplot{0.5}{5.5}{\f(x)}
\psplot[linecolor=magenta]{0.5}{5.5}{\g(x)}
\rput(!5.5 {\f(5.5) 0.25 add}/Y ED Y){$f(x)$}
\psset{PointName=none,PointSymbol=none}
\pstInterFF{\f(x)}{\g(x)}{0.5}{A}
\pstInterFF{\f(x)}{\g(x)}{5.5}{B}
\pstGeonode
(!2 {\g(2)}/Y ED Y){C}
(!2 {\f(2)}/Y ED Y){D}
(0,0|A){Ay}
(A|0,0){Ax}
(0,0|B){By}
(B|0,0){Bx}
(0,0|C){Cy}
(C|0,0){Cx}
(0,0|D){Dy}
(D|0,0){Dx}
\psset{linestyle=dashed,dash=2pt 1pt,linecolor=gray,linewidth=0.5\pslinewidth}
\psline(Ax)(A)(Ay)
\psline(Bx)(B)(By)
\psline(Cx)(C)(Cy)
\psline(Dx)(D)(Dy)
\uput[-90](Ax){\tiny$x_1$}
\uput[-90](Bx){\tiny$x_2$}
\uput[-90](Cx){\tiny$tx_1+(1-t)x_2$}
\uput[180](Cy){\tiny$tf(x_1)+(1-t)f(x_2)$}
\uput[180](Dy){\tiny$f(tx_1+(1-t)x_2)$}
\end{pspicture}
\end{document}
Remarks
\usepackage{pst-eucl} for (among others) \pstGeonode and \pstInterFF.
\usepackage{pst-plot} for (among others) \psaxes and \psplot.
\def\f(#1){#1 2 sub 2 exp 2 mul 9 div 1 add} is the quadratic function in RPN (Reverse Polish Notation). It equals to \f(#1)=2/9 * (#1-2)^2 + 1 in infix notation.
\def\g(#1){#1 2.5 div 1 add} is the line function in RPN. It equals to \g(#1)=#1/2.5 + 1 in infix notation.
\begin{pspicture}(-3,-1)(6,4)<drawing macros>\end{pspicture} defines the size of drawing area (canvas).
\psaxes[labels=none,ticks=none]{->}(0,0)(-3,-1)(6,4)[$x$,0][$y$,90] draws Cartesian coordinate axes with x and y labels but without numerical labels and their tick marks.
-> represents there is one arrow head for each axis. The arrow head is at the right end for the horizontal axis and at the top end for the vertical axis. If we use <-, we obtain the opposite position; the arrow head is at the left end for the horizontal axis and at the bottom for the vertical axis. Using <-> makes all ends have arrow heads. There are many options to change the shape of the arrow head, please consult the PSTricks documentation for the details.
\psplot{0.5}{5.5}{\f(x)} plots \f(x) from 0.5 to 5.5.
\psplot[linecolor=magenta]{0.5}{5.5}{\g(x)} plots \g(x) from 0.5 to 5.5 and change the color line to magenta.
\rput(!5.5 {\f(5.5) 0.25 add}/Y ED Y){$f(x)$} puts $f(x)$ label at the point (5.5,f(5.5)+0.25).
(!5.5 {\f(5.5) 0.25 add}/Y ED Y) is a point in RPN. It equals to (5.5,f(5.5)+0.25). The RPN version seems to be cryptic but you will get used to after doing a bit of exercises. <operand> /Y ED Y is the short notation for <operand> /Y exch def Y (of course, there is no significant number of keystrokes we can save).
\psset{PointName=none,PointSymbol=none} set options that affect the following macros.
\pstInterFF{\f(x)}{\g(x)}{0.5}{A} searches for the nearest intersection point between \f(x) and \g(x) around x=0.5. The intersection point will be named as A.
\pstInterFF{\f(x)}{\g(x)}{5.5}{B} searches for the nearest intersection point between \f(x) and \g(x) around x=5.5. The intersection point will be named as B.
The following
\pstGeonode
(!2 {\g(2)}/Y ED Y){C}
(!2 {\f(2)}/Y ED Y){D}
(0,0|A){Ay}
(A|0,0){Ax}
(0,0|B){By}
(B|0,0){Bx}
(0,0|C){Cy}
(C|0,0){Cx}
(0,0|D){Dy}
(D|0,0){Dx}
is used to define
point C at (2,g(2))
point D at (2,f(2))
point Py at (0,<ordinate of P>) where point P should be read as any point.
point Px at (<abscissa of P>,0) where point P should be read as any point.
The theory you need to know is (<coordinate 1>|<coordinate 2>) represents a new coordinate that equals to (<abscissa of coordinate 1>, <ordinate of coordinate 2>). Please consult the PSTricks documentation for the details.
\psline(Px)(P)(Py) draws a series of lines starting from point Px and stopping at point Py.
\uput[<angle>](<point>){<contents>} puts <contents> in the direction of <angle> from the point (<point>).
If you have any question, please make a comment. And make sure you compile the code with either latex->dvips->ps2pdf sequence or a single xelatex.
The latest edit:
There are some minor changes I made.
Scaling math font globally and using the default text font size (rather than \tiny) for all labels.
\usepackage{lmodern}
\DeclareMathSizes{10}{8}{5}{4}
Removing 2 unnecessary horizontal dashed lines.
Aligning labels on the horizontal axis by using \rput instead of \uput.

\documentclass[pstricks,border={2pt 2pt 2pt 4pt}]{standalone}
\usepackage{pst-eucl}
\usepackage{pst-plot}
\usepackage{lmodern}
\DeclareMathSizes{10}{8}{5}{4}
\def\f(#1){#1 2 sub 2 exp 2 mul 9 div 1 add}
\def\g(#1){#1 2.5 div 1 add}
\begin{document}
\begin{pspicture}(-3,-0.5)(6,4)
\psaxes[labels=none,ticks=none,arrowinset=0]{->}(0,0)(-3,-0.5)(6,4)%[$x$,0][$y$,90]
\psplot{0.5}{5.5}{\f(x)}
\psplot[linecolor=magenta]{0.5}{5.5}{\g(x)}
\rput(!5.5 {\f(5.5) 0.2 add}/Y ED Y){$f(x)$}
\psset{PointName=none,PointSymbol=none}
\pstInterFF{\f(x)}{\g(x)}{0.5}{A}
\pstInterFF{\f(x)}{\g(x)}{5.5}{B}
\pstGeonode
(!2.2 {\g(2.2)}/Y ED Y){C}
(!2.2 {\f(2.2)}/Y ED Y){D}
%(0,0|A){Ay}
(A|0,0){Ax}
%(0,0|B){By}
(B|0,0){Bx}
(0,0|C){Cy}
(C|0,0){Cx}
(0,0|D){Dy}
(D|0,0){Dx}
(0,-0.25){XLabel}
\psset{linestyle=dashed,dash=2pt 1pt,linecolor=gray,linewidth=0.5\pslinewidth}
\psline(Ax)(A)%(Ay)
\psline(Bx)(B)%(By)
\psline(Cx)(C)(Cy)
\psline(Dx)(D)(Dy)
\rput(Ax|XLabel){$x_1$}
\rput(Bx|XLabel){$x_2$}
\rput(Cx|XLabel){$tx_1+(1-t)x_2$}
\uput[180](Cy){$tf(x_1)+(1-t)f(x_2)$}
\uput[180](Dy){$f(tx_1+(1-t)x_2)$}
\end{pspicture}
\end{document}
dashedd) and a missing style (up). – Jake Feb 16 at 17:18pgfplots, but your attempt doesn't use it. Did you just want atikzsolution? – Matthew Leingang Feb 17 at 4:01