tom10 , .
[0,1], [0,1], .
. , , .
mid .
beta1 beta2 , ( ).
height ( y ).
x y.
initial_divisions resolution_factor , x, .
import numpy as NP
def range_brace(x_min, x_max, mid=0.75,
beta1=50.0, beta2=100.0, height=1,
initial_divisions=11, resolution_factor=1.5):
x0 = NP.array(())
tmpx = NP.linspace(0, 0.5, initial_divisions)
tmp = beta1**2 * (NP.exp(beta1*tmpx)) * (1-NP.exp(beta1*tmpx)) / NP.power((1+NP.exp(beta1*tmpx)),3)
tmp += beta2**2 * (NP.exp(beta2*(tmpx-0.5))) * (1-NP.exp(beta2*(tmpx-0.5))) / NP.power((1+NP.exp(beta2*(tmpx-0.5))),3)
for i in range(0, len(tmpx)-1):
t = int(NP.ceil(resolution_factor*max(NP.abs(tmp[i:i+2]))/float(initial_divisions)))
x0 = NP.append(x0, NP.linspace(tmpx[i],tmpx[i+1],t))
x0 = NP.sort(NP.unique(x0)) # sort and remove dups
y0 = mid*2*((1/(1.+NP.exp(-1*beta1*x0)))-0.5)
y0 += (1-mid)*2*(1/(1.+NP.exp(-1*beta2*(x0-0.5))))
x = NP.concatenate((x0, 1-x0[::-1])) * float((x_max-x_min)) + x_min
y = NP.concatenate((y0, y0[::-1])) * float(height)
return (x,y)
:
import pylab as plt
fig = plt.figure()
ax = fig.add_subplot(111)
x,y = range_brace(0, 100)
ax.plot(x, y,'-')
plt.show()

PS: , clip_on=False plot .