xxxxxxxxxx
def _soma_riemann(f=sin(x), a=0, b=2*pi, n=(15,(1,50,1)), auto_update=True, percet_intervalo=(0.5, (0, 1, 0.1))):
'''
Entradas:
f - expressão algébrica
a - ponto inicial do intervalo
b - ponto final do intervalo
n - numero de subintervalos da partição
saída: Gráfico de f com os retângulos da soma de Riemann
'''
G = Graphics()
n_passos = n
passo = 0
pmi = 0
area =0
variacao = (b-a)/n
for i in range(n_passos):
inicio = a + passo
fim = a + passo + variacao
pmi = f(x=inicio+percet_intervalo*(fim-inicio)) #(f(x=inicio) + f(x=fim))/2
area=area+pmi*variacao
int_do_passo = [inicio, fim]
G = G + plot(pmi, inicio, fim , fill='axis', color='gray') + line([(fim,0), (fim, pmi)], color='gray') + line([(inicio,0), (inicio, pmi)], color='gray')
passo = passo+variacao
G = G + plot(f, a, b)
return G.show(figsize=[4,4], title = ' area = ' + str(float(area)))
xxxxxxxxxx
def _(f = input_box(default = sin(x), width=20, type = SR, label='f(x)'), interval=range_slider(0, 20, 1, default=(0, 8), label="(a, b)"), n = slider(5,50,1,1, label='n'), auto_update=True):
a, b = map(QQ, interval)
dx = ((b-a))/n
k = var('k')
m(k) = (f(x=a+k*dx)-f(x=a+(k-1)*dx))/dx
S = dx*sum([sqrt(1+m(k)^2) for k in [1..n]])
pretty_print(html('<h4><p>Comprimento de Arco aproximado</p></h4>'))
pretty_print(html(r'$L_{%s} {\approx} \displaystyle\sum_i^{%s}{|P_{i-1}P_i|}$ = %s' %(n,n,N(S, digits=5))))
L = numerical_integral(sqrt(1+diff(f, x)^2), a,b)[0]
L = N(L,digits=5)
pretty_print(html('<h4><p>Comprimento de Arco Exato</p></h4>'))
pretty_print(html(r'$L = \displaystyle\int_{%s}^{%s}{\sqrt{1+\left[f^{\prime}(x)\right]^2} dx} = $ %s'%(a,b,L)))
p = plot(f, (x,a,b), color='blue', ticks=[[a,b], []], axes_labels=['$x$', '$y$'])
p0 = plot(1, (0.1,b), linestyle='')
points = [(a+k*dx, f(x=a+k*dx)) for k in [0..n]]
q = line(points, color='magenta')
r = point(points, color='blue', size=15)
#pretty_print(html('<h4><p>Figura</p></h4>'))
show(p+p0+q+ r, figsize=(4,3))
#pretty_print(html(r'$L = \displaystyle\lim_{n \to \infty}\sum_i^n{|P_{i-1}P_i|}$'))