'''
Licence: Creative Commons Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0)
Author: Pedro H A Konzen - 08/2015
Description:
Illustration of the Intermediate Valeu Theorem:
If $f:[a,b]\to\mathbb{R}$ is a continuous function and $K \in (f(a),~f(b))$, then there exists $c\in (a,~b)$ such that $f(c)=K$.
'''
import numpy as np
import matplotlib.pyplot as plt
#canvas
fig = plt.figure(figsize=(4,4), dpi=100, linewidth=0.0, facecolor="white")
#axes definitions
ax = plt.subplot(1,1,1)
ax.set_xlim(-2,10)
ax.set_ylim(-1,5)
ax.set_xticks([])
ax.set_yticks([])
ax.set_frame_on(False)
ax.arrow(-2, 0, 12, 0, head_width=0.15, head_length=0.5, length_includes_head=True)
ax.text(9.5,-0.75,r"$x$",fontsize=14)
ax.arrow(0, -1, 0, 6, head_width=0.25, head_length=0.25, length_includes_head=True)
ax.text(-0.75, 4.5, r"$y$",fontsize=14)
def f(x):
return 1.5*np.sin(x/1.8) + 2
a = 2
b = 8
x = np.linspace (a, b, 100, endpoint=True)
ax.plot(x, f(x))
#dashed lines
#(a, f(a))
ax.plot (a, f(a), 'ko', markersize=3)
ax.text (-1.5, f(a), r"$f(a)$", fontsize=14)
ax.plot ([-0.1, 0.1], [f(a), f(a)], color='black')
ax.plot ([0, a], [f(a), f(a)], color='gray', linestyle='dashed')
ax.plot ([a, a], [f(a), 0], color='gray', linestyle='dashed')
ax.plot ([a, a], [-0.1, 0.1], color='black')
ax.text (a - 0.25, -0.5, r"$a$", fontsize=14)
#(b, f(b))
ax.plot (b, f(b), 'ko', markersize=3)
ax.text (-1.5, f(b), r"$f(b)$", fontsize=14)
ax.plot ([-0.1, 0.1], [f(b), f(b)], color='black')
ax.plot ([0, b], [f(b), f(b)], color='gray', linestyle='dashed')
ax.plot ([b, b], [f(b), 0], color='gray', linestyle='dashed')
ax.plot ([b, b], [-0.1, 0.1], color='black')
ax.text (b - 0.25, -0.5, r"$b$", fontsize=14)
#line K
#(c, d = f(p))
c = 2*(a + b)/3
ax.plot (c, f(c), 'ko', markersize=3)
ax.text (-1.5, f(c), r"$d$", fontsize=14)
ax.plot ([-0.1, 0.1], [f(c), f(c)], color='black')
ax.plot ([0, b], [f(c), f(c)], color='red', linestyle='solid')
ax.plot ([0, p], [f(c), f(c)], color='black', linestyle='dashed')
ax.plot ([c, c], [f(c), 0], color='black', linestyle='dashed')
ax.plot ([c, c], [-0.1, 0.1], color='black')
ax.text (c - 0.25, -0.5, r"$c$", fontsize=14)
#plt.show()
fig_file = "teorema_do_valor_intermediario"
fig.savefig(fig_file+".svg", bbox_inches='tight', pad_inches=0.0)