1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
|
#!/usr/bin/env python
# -*- encoding: utf-8 -*-
from matplotlib import rc
rc("text", usetex=True)
rc("font", family="serif")
def plot_interval(a, c, x_left, x_right, i, fbound):
lh = c * (1 - a[0])
rh = c * (1 + a[1])
x = arange(x_left, x_right + 1)
y = 0 * x
arrow_r = Arrow(c, 0, c * a[1], 0, 0.2)
arrow_l = Arrow(c, 0, -c * a[0], 0, 0.2)
plot(x, y)
text(
(x_left + lh) / 2.0,
0.1,
"freebound interval [%s, %s] is penalty-free" % (lh, rh),
)
text((x_left + lh) / 2.0, 0.2, "rhs=%s, %s" % (c, fbound))
cur_ax = gca()
cur_ax.add_patch(arrow_l)
cur_ax.add_patch(arrow_r)
axis([x_left, x_right, -0.1, 0.3])
yticks([])
title("Elasticized constraint\_%s $C(x)= %s $" % (i, c))
figure()
subplots_adjust(hspace=0.5)
fbound = "proportionFreeBound"
i = 1
subplot(2, 1, i)
a = [0.01, 0.01]
c = 200
x_left = 0.97 * c
x_right = 1.03 * c
fb_string = "%s%s = %s" % (fbound, "", a[0])
plot_interval(a, c, x_left, x_right, i, fb_string)
i += 1
subplot(2, 1, i)
a = [0.02, 0.05]
c = 500
x_left = 0.9 * c # scale of window
x_right = 1.2 * c # scale of window
fb_string = "%s%s = [%s,%s]" % (fbound, "List", a[0], a[1])
plot_interval(a, c, x_left, x_right, i, fb_string)
savefig("freebound.jpg")
savefig("freebound.pdf")
# vim: fenc=utf-8: ft=python:sw=4:et:nu:fdm=indent:fdn=1:syn=python
|