%23%20%2F%2F%2F%20script%0A%23%20requires-python%20%3D%20%22%3E%3D3.11%22%0A%23%20dependencies%20%3D%20%5B%22marimo%3E%3D0.23.9%22%2C%20%22numpy%3E%3D2.0%22%2C%20%22matplotlib%3E%3D3.9%22%2C%20%22pandas%3E%3D2.2%22%2C%20%22scipy%3E%3D1.14%22%2C%20%22optcutfreq%3E%3D0.0.10%22%2C%20%22urllib3%3E%3D2.2%22%5D%0A%23%20%2F%2F%2F%0A%0Aimport%20marimo%0A%0A__generated_with%20%3D%20%220.25.2%22%0Aapp%20%3D%20marimo.App()%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%20Acelera%C3%A7%C3%A3o%20da%20gravidade%20%E2%80%94%20laborat%C3%B3rio%20de%20Biomec%C3%A2nica%20I%0A%0A%20%20%20%20%3E%20Renato%20Naville%20Watanabe%2C%20Marcos%20Duarte%3Cbr%3E%0A%20%20%20%20%3E%20%5BLaborat%C3%B3rio%20de%20Biomec%C3%A2nica%20e%20Controle%20Motor%5D(https%3A%2F%2Fbmclab.pesquisa.ufabc.edu.br%2F)%3Cbr%3E%0A%20%20%20%20%3E%20Universidade%20Federal%20do%20ABC%2C%20Brasil%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20Como%20usar%20este%20roteiro%0A%0A%20%20%20%20Como%20podemos%20estimar%20a%20gravidade%20a%20partir%20de%20posi%C3%A7%C3%B5es%20medidas%20em%20v%C3%ADdeo%2C%20sem%20confundir%20ru%C3%ADdo%20e%20acelera%C3%A7%C3%A3o%3F%20Vamos%20seguir%20o%20protocolo%20do%20laborat%C3%B3rio%20de%202022%3A%20abrir%20%60massa_A.txt%60%2C%20calcular%20derivadas%20de%20tr%C3%AAs%20maneiras%2C%20estimar%20a%20acelera%C3%A7%C3%A3o%20vertical%20e%20comparar%20suaviza%C3%A7%C3%B5es.%0A%0A%20%20%20%20Execute%20as%20c%C3%A9lulas%20na%20ordem%20da%20leitura%20e%20descreva%20o%20que%20espera%20antes%20de%20alterar%20uma%20frequ%C3%AAncia%20de%20corte.%20Resolva%20os%20**Exerc%C3%ADcios**%20distribu%C3%ADdos%20pelo%20texto%20e%20abra%20suas%20solu%C3%A7%C3%B5es%20somente%20depois%20da%20tentativa.%20As%20**Quest%C3%B5es%20de%20verifica%C3%A7%C3%A3o**%20revisam%20as%20ideias%3B%20os%20**Problemas**%20finais%20t%C3%AAm%20apenas%20respostas%20finais%20recolhidas.%0A%0A%20%20%20%20**Desafio%20inicial.**%20O%20objeto%20sobe%2C%20para%20por%20um%20instante%20e%20desce.%20No%20ponto%20mais%20alto%2C%20sua%20acelera%C3%A7%C3%A3o%20%C3%A9%20zero%3F%20E%20por%20que%20a%20segunda%20derivada%20de%20uma%20trajet%C3%B3ria%20quase%20parab%C3%B3lica%20pode%20oscilar%20tanto%3F%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20Prepara%C3%A7%C3%A3o%20em%20Python%20e%20protocolo%20da%20atividade%0A%0A%20%20%20%20Usaremos%20NumPy%20para%20vetores%2C%20pandas%20para%20a%20tabela%2C%20Matplotlib%20para%20os%20gr%C3%A1ficos%2C%20SciPy%20para%20filtros%20e%20%60optcutfreq%60%20para%20a%20an%C3%A1lise%20de%20res%C3%ADduos.%20As%20depend%C3%AAncias%20est%C3%A3o%20declaradas%20no%20pr%C3%B3prio%20arquivo%3B%20n%C3%A3o%20%C3%A9%20preciso%20montar%20o%20Google%20Drive%20nem%20executar%20%60pip%20install%60%20dentro%20da%20aula.%0A%0A%20%20%20%20O%20exemplo%20usa%20uma%20c%C3%B3pia%20p%C3%BAblica%20arquivada%20de%20%60massa_A.txt%60%2C%20fixada%20%C3%A0%20revis%C3%A3o%20%605366ffa7%60%20para%20continuar%20dispon%C3%ADvel%20ap%C3%B3s%20a%20remo%C3%A7%C3%A3o%20da%20pasta%20antiga.%20Voc%C3%AA%20tamb%C3%A9m%20pode%20enviar%20suas%20pr%C3%B3prias%20medidas.%20Primeiro%20reproduza%20os%20resultados%20com%20o%20arquivo%20da%20turma.%20Para%20repetir%20a%20experi%C3%AAncia%2C%20registre%20um%20lan%C3%A7amento%20no%20plano%20da%20imagem%2C%20calibre%20a%20escala%20espacial%2C%20escolha%20y%20positivo%20para%20cima%20e%20exporte%20tempo%20em%20segundos%20e%20posi%C3%A7%C3%B5es%20x%2Cy%20em%20metros.%20Inspecione%20contatos%2C%20quadros%20ausentes%2C%20paralaxe%20e%20a%20calibra%C3%A7%C3%A3o%20antes%20de%20atribuir%20toda%20acelera%C3%A7%C3%A3o%20medida%20%C3%A0%20gravidade.%20Escolha%20apenas%20o%20trecho%20de%20voo%20livre%20para%20essa%20interpreta%C3%A7%C3%A3o.%0A%0A%20%20%20%20O%20arquivo%20original%20tem%20uma%20linha%20de%20identifica%C3%A7%C3%A3o%2C%20seguida%20do%20cabe%C3%A7alho%20%60t%60%2C%20%60x%60%2C%20%60y%60%2C%20separado%20por%20tabula%C3%A7%C3%B5es.%20Voc%C3%AA%20pode%20enviar%20outro%20arquivo%20no%20mesmo%20formato%20pelo%20controle%20abaixo.%20Ele%20ser%C3%A1%20lido%20em%20mem%C3%B3ria%3B%20o%20arquivo%20original%20permanece%20preservado.%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_()%3A%0A%20%20%20%20import%20marimo%20as%20mo%0A%20%20%20%20import%20numpy%20as%20np%0A%20%20%20%20import%20pandas%20as%20pd%0A%20%20%20%20import%20matplotlib.pyplot%20as%20plt%0A%20%20%20%20from%20scipy.signal%20import%20butter%2C%20filtfilt%2C%20lfilter%2C%20sosfiltfilt%0A%20%20%20%20from%20optcutfreq%20import%20optcutfreq%0A%0A%20%20%20%20return%20butter%2C%20filtfilt%2C%20lfilter%2C%20mo%2C%20np%2C%20optcutfreq%2C%20pd%2C%20plt%2C%20sosfiltfilt%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_()%3A%0A%20%20%20%20try%3A%0A%20%20%20%20%20%20%20%20from%20notebook_resources%20import%20repo_file%0A%20%20%20%20except%20ModuleNotFoundError%20as%20_error%3A%0A%20%20%20%20%20%20%20%20if%20_error.name%20!%3D%20%22notebook_resources%22%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20raise%0A%20%20%20%20%20%20%20%20raise%20ModuleNotFoundError(%0A%20%20%20%20%20%20%20%20%20%20%20%20%22This%20notebook%20needs%20notebook_resources.py.%20Download%20it%20from%3A%5Cn%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%22https%3A%2F%2Fraw.githubusercontent.com%2FBMClab%2FBMC%2Fmaster%2Ffunctions%2Fnotebook_resources.py%5Cn%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%22Save%20it%20in%20the%20same%20folder%20as%20this%20notebook%2C%20then%20rerun%20this%20cell.%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20name%3D%22notebook_resources%22%2C%0A%20%20%20%20%20%20%20%20)%20from%20None%0A%20%20%20%20return%20(repo_file%2C)%0A%0A%0A%40app.cell%0Adef%20_(mo)%3A%0A%20%20%20%20arquivo%20%3D%20mo.ui.file(label%3D%22Opcional%3A%20enviar%20tabela%20de%20posi%C3%A7%C3%B5es%20(.txt)%22)%0A%20%20%20%20arquivo%0A%20%20%20%20return%20(arquivo%2C)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20Abertura%20do%20arquivo%0A%0A%20%20%20%20Observe%20a%20tabela%20e%20depois%20a%20trajet%C3%B3ria%20no%20plano%20x%E2%80%93y.%20Esses%20dois%20gr%C3%A1ficos%20respondem%20a%20perguntas%20diferentes%3A%20a%20trajet%C3%B3ria%20mostra%20onde%20o%20objeto%20passou%3B%20as%20s%C3%A9ries%20temporais%20mostram%20quando%20ele%20passou.%20A%20unidade%20de%20uma%20derivada%20depende%20das%20unidades%20da%20tabela.%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(arquivo%2C%20np%2C%20pd%2C%20repo_file)%3A%0A%20%20%20%20from%20io%20import%20BytesIO%0A%20%20%20%20_conteudo%20%3D%20arquivo.contents()%0A%20%20%20%20_fonte%20%3D%20BytesIO(_conteudo)%20if%20_conteudo%20is%20not%20None%20else%20repo_file(%22courses%2FbiomechanicsI_2022%2Fmassa_A.txt%22%2C%20base_url%3D%22https%3A%2F%2Fraw.githubusercontent.com%2FBMClab%2FBMC%2F5366ffa7e12fc61b3c2410c173128e468a9fe524%2F%22)%0A%20%20%20%20dado%20%3D%20pd.read_csv(_fonte%2C%20sep%3D%22%5Ct%22%2C%20skiprows%3D1)%0A%20%20%20%20if%20not%20%7B%22t%22%2C%20%22x%22%2C%20%22y%22%7D.issubset(dado.columns)%3A%0A%20%20%20%20%20%20%20%20raise%20ValueError(%22O%20arquivo%20precisa%20das%20colunas%20t%2C%20x%20e%20y%20ap%C3%B3s%20a%20linha%20de%20identifica%C3%A7%C3%A3o.%22)%0A%20%20%20%20dado%20%3D%20dado%5B%5B%22t%22%2C%20%22x%22%2C%20%22y%22%5D%5D.astype(float)%0A%20%20%20%20if%20len(dado)%20%3C%2030%20or%20not%20np.isfinite(dado.to_numpy()).all()%3A%0A%20%20%20%20%20%20%20%20raise%20ValueError(%22Use%20pelo%20menos%2030%20amostras%20finitas%2C%20sem%20lacunas%20nas%20colunas.%22)%0A%20%20%20%20tempo%20%3D%20dado%5B%22t%22%5D.to_numpy()%0A%20%20%20%20x%20%3D%20dado%5B%22x%22%5D.to_numpy()%0A%20%20%20%20y%20%3D%20dado%5B%22y%22%5D.to_numpy()%0A%20%20%20%20if%20not%20np.all(np.diff(tempo)%20%3E%200)%3A%0A%20%20%20%20%20%20%20%20raise%20ValueError(%22Os%20tempos%20precisam%20ser%20estritamente%20crescentes.%22)%0A%20%20%20%20dado%0A%20%20%20%20return%20tempo%2C%20x%2C%20y%0A%0A%0A%40app.cell%0Adef%20_(plt%2C%20tempo%2C%20x%2C%20y)%3A%0A%20%20%20%20_fig%2C%20_ax%20%3D%20plt.subplots(1%2C%202%2C%20figsize%3D(11%2C%204))%0A%20%20%20%20_ax%5B0%5D.plot(x%2C%20y%2C%20%22.-%22)%0A%20%20%20%20_ax%5B0%5D.set(xlabel%3D%22x%20(m)%22%2C%20ylabel%3D%22y%20(m)%22%2C%20title%3D%22Trajet%C3%B3ria%20medida%22)%0A%20%20%20%20_ax%5B0%5D.set_aspect(%22equal%22%2C%20adjustable%3D%22datalim%22)%0A%20%20%20%20_ax%5B1%5D.plot(tempo%2C%20x%2C%20label%3D%22x%22)%0A%20%20%20%20_ax%5B1%5D.plot(tempo%2C%20y%2C%20label%3D%22y%22)%0A%20%20%20%20_ax%5B1%5D.set(xlabel%3D%22Tempo%20(s)%22%2C%20ylabel%3D%22Posi%C3%A7%C3%A3o%20(m)%22)%0A%20%20%20%20_ax%5B1%5D.legend()%0A%20%20%20%20_fig.tight_layout()%0A%20%20%20%20_fig%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20Per%C3%ADodo%20de%20amostragem%3A%20confira%20todos%20os%20intervalos%0A%0A%20%20%20%20O%20roteiro%20original%20calculava%20%60t%5B2%5D-t%5B1%5D%60%20e%20usava%20esse%20%C3%BAnico%20n%C3%BAmero%20no%20registro%20inteiro.%20Vamos%20verificar%20a%20hip%C3%B3tese%20antes%20de%20empreg%C3%A1-la.%20No%20arquivo%20da%20turma%2C%20o%20primeiro%20intervalo%20%C3%A9%200%2C046%20s%20e%20os%20seguintes%20alternam%20aproximadamente%200%2C008%20e%200%2C009%20s.%20H%C3%A1%20uma%20lacuna%20inicial%20e%20arredondamento%20dos%20tempos%3B%20um%20%C3%BAnico%20intervalo%20de%200%2C009%20s%20n%C3%A3o%20representa%20toda%20a%20aquisi%C3%A7%C3%A3o.%0A%0A%20%20%20%20Para%20derivar%2C%20usaremos%20os%20pr%C3%B3prios%20tempos.%20Para%20os%20filtros%20digitais%2C%20que%20sup%C3%B5em%20uma%20grade%20temporal%20uniforme%2C%20construiremos%20adiante%20uma%20grade%20expl%C3%ADcita%20no%20trecho%20cont%C3%ADnuo%20ap%C3%B3s%20a%20lacuna%20inicial.%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(np%2C%20pd%2C%20tempo)%3A%0A%20%20%20%20intervalos%20%3D%20np.diff(tempo)%0A%20%20%20%20dt_original%20%3D%20tempo%5B2%5D%20-%20tempo%5B1%5D%0A%20%20%20%20pd.DataFrame(%7B%22medida%22%3A%20%5B%22primeiro%20intervalo%22%2C%20%22intervalo%20usado%20no%20roteiro%20original%22%2C%20%22menor%20intervalo%22%2C%20%22maior%20intervalo%22%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22tempo%20(s)%22%3A%20%5Bintervalos%5B0%5D%2C%20dt_original%2C%20intervalos.min()%2C%20intervalos.max()%5D%7D)%0A%20%20%20%20return%20(intervalos%2C)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20**Exerc%C3%ADcio%201.**%20Uma%20posi%C3%A7%C3%A3o%20muda%200%2C018%20m%20em%200%2C009%20s.%20Qual%20%C3%A9%20a%20velocidade%20m%C3%A9dia%20nesse%20intervalo%3F%20Se%20o%20intervalo%20fosse%200%2C008%20s%2C%20o%20resultado%20seria%20igual%3F%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%2F%2F%2F%20details%20%7C%20Solu%C3%A7%C3%A3o%20do%20exerc%C3%ADcio%201%0A%0A%20%20%20%20%24v%3D%5CDelta%20x%2F%5CDelta%20t%3D2%24%20m%2Fs%20no%20primeiro%20caso%20e%202%2C25%20m%2Fs%20no%20segundo.%20Dividir%20todos%20os%20incrementos%20por%20um%20intervalo%20errado%20introduz%20um%20erro%20de%20escala%2C%20mesmo%20sem%20ru%C3%ADdo%20espacial.%0A%20%20%20%20%2F%2F%2F%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20Derivada%20num%C3%A9rica%20com%20%60for%60%2C%20%60np.diff%60%20e%20%60np.gradient%60%0A%0A%20%20%20%20Para%20cada%20par%20de%20amostras%2C%20%24%08ar%20v_i%3D(x_%7Bi%2B1%7D-x_i)%2F(t_%7Bi%2B1%7D-t_i)%24.%20Existem%20N%E2%88%921%20intervalos%20para%20N%20posi%C3%A7%C3%B5es.%20N%C3%A3o%20acrescente%20um%20zero%20artificial%20na%20%C3%BAltima%20amostra%3A%20ele%20pareceria%20uma%20parada%20que%20n%C3%A3o%20foi%20medida.%20Desenharemos%20essa%20velocidade%20no%20ponto%20m%C3%A9dio%20do%20intervalo.%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(np%2C%20plt%2C%20tempo%2C%20x)%3A%0A%20%20%20%20dxdt_1%20%3D%20np.zeros(len(tempo)%20-%201)%0A%20%20%20%20for%20_i%20in%20range(len(tempo)%20-%201)%3A%0A%20%20%20%20%20%20%20%20dxdt_1%5B_i%5D%20%3D%20(x%5B_i%20%2B%201%5D%20-%20x%5B_i%5D)%20%2F%20(tempo%5B_i%20%2B%201%5D%20-%20tempo%5B_i%5D)%0A%20%20%20%20tempo_meio%20%3D%20(tempo%5B%3A-1%5D%20%2B%20tempo%5B1%3A%5D)%20%2F%202%0A%20%20%20%20_fig%2C%20_ax%20%3D%20plt.subplots(figsize%3D(8%2C%203))%0A%20%20%20%20_ax.plot(tempo_meio%2C%20dxdt_1)%0A%20%20%20%20_ax.set(xlabel%3D%22Tempo%20(s)%22%2C%20ylabel%3D%22Velocidade%20x%20(m%2Fs)%22%2C%20title%3D%22Diferen%C3%A7as%20por%20intervalo%3A%20for%22)%0A%20%20%20%20_fig%0A%20%20%20%20return%20dxdt_1%2C%20tempo_meio%0A%0A%0A%40app.cell%0Adef%20_(dxdt_1%2C%20np%2C%20plt%2C%20tempo%2C%20tempo_meio%2C%20x)%3A%0A%20%20%20%20dxdt_2%20%3D%20np.diff(x)%20%2F%20np.diff(tempo)%0A%20%20%20%20np.testing.assert_allclose(dxdt_1%2C%20dxdt_2)%0A%20%20%20%20_fig%2C%20_ax%20%3D%20plt.subplots(figsize%3D(8%2C%203))%0A%20%20%20%20_ax.plot(tempo_meio%2C%20dxdt_2)%0A%20%20%20%20_ax.set(xlabel%3D%22Tempo%20(s)%22%2C%20ylabel%3D%22Velocidade%20x%20(m%2Fs)%22%2C%20title%3D%22A%20mesma%20opera%C3%A7%C3%A3o%3A%20np.diff%22)%0A%20%20%20%20_fig%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%60np.gradient(x%2C%20tempo%2C%20edge_order%3D2)%60%20devolve%20N%20valores%20nos%20tempos%20originais%3A%20combina%20diferen%C3%A7as%20centrais%20no%20interior%20e%20f%C3%B3rmulas%20unilaterais%20nas%20bordas.%20Aceita%20coordenadas%20n%C3%A3o%20uniformes.%20Isso%20n%C3%A3o%20elimina%20o%20ru%C3%ADdo%20e%20n%C3%A3o%20transforma%20os%20resultados%20de%20borda%20em%20medidas%20exatas.%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(np%2C%20plt%2C%20tempo%2C%20x)%3A%0A%20%20%20%20dxdt_3%20%3D%20np.gradient(x%2C%20tempo%2C%20edge_order%3D2)%0A%20%20%20%20_fig%2C%20_ax%20%3D%20plt.subplots(figsize%3D(8%2C%203))%0A%20%20%20%20_ax.plot(tempo%2C%20dxdt_3)%0A%20%20%20%20_ax.set(xlabel%3D%22Tempo%20(s)%22%2C%20ylabel%3D%22Velocidade%20x%20(m%2Fs)%22%2C%20title%3D%22Derivada%20nos%20tempos%20originais%3A%20gradient%22)%0A%20%20%20%20_fig%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20**Exerc%C3%ADcio%202.**%20Considere%20%24x(t)%3Dt%5E2%24%20em%20t%3D0%2C%201%2C%202%20s.%20Quais%20velocidades%20aparecem%20nos%20dois%20intervalos%20com%20diferen%C3%A7as%20simples%3F%20E%20quais%20valores%20fornece%20a%20derivada%20exata%20nos%20tr%C3%AAs%20tempos%3F%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%2F%2F%2F%20details%20%7C%20Solu%C3%A7%C3%A3o%20do%20exerc%C3%ADcio%202%0A%0A%20%20%20%20As%20diferen%C3%A7as%20d%C3%A3o%201%20e%203%20m%2Fs%2C%20associadas%20aos%20tempos%20m%C3%A9dios%200%2C5%20e%201%2C5%20s.%20A%20derivada%20exata%20%242t%24%20vale%200%2C%202%20e%204%20m%2Fs.%20%60gradient(...%2C%20edge_order%3D2)%60%20recupera%20esses%20tr%C3%AAs%20valores%20para%20essa%20par%C3%A1bola%20sem%20ru%C3%ADdo.%0A%20%20%20%20%2F%2F%2F%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20Velocidades%2C%20acelera%C3%A7%C3%B5es%20e%20estimativa%20de%20g%0A%0A%20%20%20%20Derive%20x%20e%20y%20duas%20vezes.%20Com%20y%20positivo%20para%20cima%20e%20resist%C3%AAncia%20do%20ar%20desprez%C3%ADvel%2C%20o%20voo%20livre%20ideal%20tem%20%24a_y%3D-g%24%20e%20%24a_x%3D0%24.%20No%20%C3%A1pice%2C%20a%20velocidade%20vertical%20%C3%A9%20zero%20por%20um%20instante%2C%20mas%20a%20gravidade%20continua%20atuando.%0A%0A%20%20%20%20Primeiro%20reproduzimos%20o%20recorte%20original%20%60%5B10%3A%5D%60.%20Depois%20comparamos%20um%20recorte%20que%20tamb%C3%A9m%20exclui%20dez%20amostras%20finais.%20Esse%20n%C3%BAmero%20%C3%A9%20um%20exerc%C3%ADcio%20de%20sensibilidade%2C%20n%C3%A3o%20uma%20regra%20universal%20para%20bordas%20ou%20para%20identificar%20voo%20livre.%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(np%2C%20plt%2C%20tempo%2C%20x%2C%20y)%3A%0A%20%20%20%20dxdt%20%3D%20np.gradient(x%2C%20tempo%2C%20edge_order%3D2)%0A%20%20%20%20dydt%20%3D%20np.gradient(y%2C%20tempo%2C%20edge_order%3D2)%0A%20%20%20%20d2xdt2%20%3D%20np.gradient(dxdt%2C%20tempo%2C%20edge_order%3D2)%0A%20%20%20%20d2ydt2%20%3D%20np.gradient(dydt%2C%20tempo%2C%20edge_order%3D2)%0A%20%20%20%20d2ydt2_cut%20%3D%20d2ydt2%5B10%3A%5D%0A%20%20%20%20t_cut%20%3D%20tempo%5B10%3A%5D%0A%20%20%20%20g_direto%20%3D%20-np.mean(d2ydt2%5B10%3A-10%5D)%0A%20%20%20%20_fig%2C%20_ax%20%3D%20plt.subplots(1%2C%202%2C%20figsize%3D(11%2C%203))%0A%20%20%20%20_ax%5B0%5D.plot(tempo%2C%20d2ydt2%2C%20label%3D%22Todas%20as%20amostras%22)%0A%20%20%20%20_ax%5B1%5D.plot(t_cut%2C%20d2ydt2_cut%2C%20label%3D%22Recorte%20original%20%5B10%3A%5D%22)%0A%20%20%20%20for%20_a%20in%20_ax%3A%0A%20%20%20%20%20%20%20%20_a.set(xlabel%3D%22Tempo%20(s)%22%2C%20ylabel%3D%22Acelera%C3%A7%C3%A3o%20y%20(m%2Fs%C2%B2)%22)%0A%20%20%20%20%20%20%20%20_a.legend()%0A%20%20%20%20_fig.tight_layout()%0A%20%20%20%20_fig%0A%20%20%20%20return%20(d2ydt2%2C)%0A%0A%0A%40app.cell%0Adef%20_(d2ydt2%2C%20np%2C%20pd)%3A%0A%20%20%20%20pd.DataFrame(%7B%22trecho%22%3A%20%5B%22todo%20o%20registro%22%2C%20%22recorte%20original%20%5B10%3A%5D%22%2C%20%22recorte%20%5B10%3A-10%5D%22%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22m%C3%A9dia%20de%20ay%20(m%2Fs%C2%B2)%22%3A%20%5Bnp.mean(d2ydt2)%2C%20np.mean(d2ydt2%5B10%3A%5D)%2C%20np.mean(d2ydt2%5B10%3A-10%5D)%5D%7D)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20**Exerc%C3%ADcio%203.**%20Duas%20estimativas%20de%20acelera%C3%A7%C3%A3o%20m%C3%A9dia%20vertical%20s%C3%A3o%20%E2%88%929%2C4%20e%20%E2%88%9210%2C2%20m%2Fs%C2%B2%2C%20com%20y%20para%20cima.%20Quais%20estimativas%20de%20g%20correspondem%20a%20elas%3F%20Uma%20curva%20mais%20lisa%20garante%20a%20melhor%20estimativa%3F%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%2F%2F%2F%20details%20%7C%20Solu%C3%A7%C3%A3o%20do%20exerc%C3%ADcio%203%0A%0A%20%20%20%20Os%20m%C3%B3dulos%20estimados%20s%C3%A3o%209%2C4%20e%2010%2C2%20m%2Fs%C2%B2.%20Suavidade%20n%C3%A3o%20garante%20exatid%C3%A3o%3A%20o%20filtro%20pode%20reduzir%20a%20vari%C3%A2ncia%20e%20ao%20mesmo%20tempo%20alterar%20curvatura%2C%20bordas%20e%20valor%20m%C3%A9dio.%20A%20qualidade%20deve%20ser%20avaliada%20com%20o%20modelo%2C%20a%20calibra%C3%A7%C3%A3o%20e%20a%20sensibilidade%20ao%20processamento.%0A%20%20%20%20%2F%2F%2F%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20Uma%20grade%20uniforme%20para%20comparar%20filtros%0A%0A%20%20%20%20Conservamos%20todas%20as%20amostras%20na%20an%C3%A1lise%20anterior.%20Somente%20para%20filtrar%2C%20retiramos%20a%20primeira%20amostra%20quando%20seu%20intervalo%20excede%20duas%20vezes%20a%20mediana%20e%20interpolamos%20linearmente%20o%20trecho%20restante%20em%20uma%20grade%20com%20o%20mesmo%20n%C3%BAmero%20de%20pontos%20e%20os%20mesmos%20extremos.%20No%20arquivo%20da%20turma%20isso%20d%C3%A1%20aproximadamente%20119%2C92%20Hz.%20A%20interpola%C3%A7%C3%A3o%20trata%20o%20arredondamento%20dos%20tempos%3B%20n%C3%A3o%20recupera%20informa%C3%A7%C3%A3o%20perdida%20na%20lacuna%20inicial.%20Lacunas%20grandes%20no%20interior%20precisam%20ser%20tratadas%20antes%20desta%20an%C3%A1lise.%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(intervalos%2C%20np%2C%20pd%2C%20tempo%2C%20x%2C%20y)%3A%0A%20%20%20%20inicio_filtro%20%3D%201%20if%20intervalos%5B0%5D%20%3E%202%20*%20np.median(intervalos)%20else%200%0A%20%20%20%20_tt%20%3D%20tempo%5Binicio_filtro%3A%5D%0A%20%20%20%20if%20np.max(np.diff(_tt))%20%3E%202%20*%20np.median(np.diff(_tt))%3A%0A%20%20%20%20%20%20%20%20raise%20ValueError(%22H%C3%A1%20lacunas%20internas%20grandes%3A%20selecione%20um%20trecho%20cont%C3%ADnuo%20antes%20de%20filtrar.%22)%0A%20%20%20%20tempo_uniforme%20%3D%20np.linspace(_tt%5B0%5D%2C%20_tt%5B-1%5D%2C%20len(_tt))%0A%20%20%20%20dt%20%3D%20float(tempo_uniforme%5B1%5D%20-%20tempo_uniforme%5B0%5D)%0A%20%20%20%20fs%20%3D%201%20%2F%20dt%0A%20%20%20%20fn%20%3D%20fs%20%2F%202%0A%20%20%20%20x_uniforme%20%3D%20np.interp(tempo_uniforme%2C%20tempo%2C%20x)%0A%20%20%20%20y_uniforme%20%3D%20np.interp(tempo_uniforme%2C%20tempo%2C%20y)%0A%20%20%20%20pd.DataFrame(%7B%22dt%20(s)%22%3A%20%5Bdt%5D%2C%20%22fs%20(Hz)%22%3A%20%5Bfs%5D%2C%20%22Nyquist%20(Hz)%22%3A%20%5Bfn%5D%2C%20%22amostras%22%3A%20%5Blen(tempo_uniforme)%5D%7D)%0A%20%20%20%20return%20dt%2C%20fs%2C%20tempo_uniforme%2C%20x_uniforme%2C%20y_uniforme%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20M%C3%A9dia%20m%C3%B3vel%20com%20%60for%60%20e%20%60lfilter%60%0A%0A%20%20%20%20A%20m%C3%A9dia%20das%20quatro%20amostras%20mais%20recentes%20%C3%A9%20%24%08ar%20x_i%3D(x_i%2Bx_%7Bi-1%7D%2Bx_%7Bi-2%7D%2Bx_%7Bi-3%7D)%2F4%24.%20Ela%20%C3%A9%20causal%20e%20atrasa%20as%20componentes%20de%20baixa%20frequ%C3%AAncia%20em%201%2C5%20amostra.%20O%20la%C3%A7o%20conserva%20os%20tr%C3%AAs%20primeiros%20valores%20sem%20filtrar%2C%20como%20no%20roteiro%20original.%20%60lfilter%60%2C%20sem%20estado%20inicial%20informado%2C%20come%C3%A7a%20com%20amostras%20anteriores%20iguais%20a%20zero.%20Compare%20o%20in%C3%ADcio%20antes%20de%20concluir%20que%20os%20algoritmos%20discordam.%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(plt%2C%20tempo_uniforme%2C%20x_uniforme)%3A%0A%20%20%20%20x_mm%20%3D%20x_uniforme.copy()%0A%20%20%20%20for%20_i%20in%20range(3%2C%20len(x_uniforme))%3A%0A%20%20%20%20%20%20%20%20x_mm%5B_i%5D%20%3D%20(x_uniforme%5B_i%5D%20%2B%20x_uniforme%5B_i%20-%201%5D%20%2B%20x_uniforme%5B_i%20-%202%5D%20%2B%20x_uniforme%5B_i%20-%203%5D)%20%2F%204%0A%20%20%20%20_fig%2C%20_ax%20%3D%20plt.subplots(figsize%3D(8%2C%203))%0A%20%20%20%20_ax.plot(tempo_uniforme%2C%20x_uniforme%2C%20label%3D%22Original%20na%20grade%20uniforme%22)%0A%20%20%20%20_ax.plot(tempo_uniforme%2C%20x_mm%2C%20label%3D%22M%C3%A9dia%20m%C3%B3vel%3A%20for%22)%0A%20%20%20%20_ax.set(xlabel%3D%22Tempo%20(s)%22%2C%20ylabel%3D%22x%20(m)%22)%0A%20%20%20%20_ax.legend()%0A%20%20%20%20_fig%0A%20%20%20%20return%20(x_mm%2C)%0A%0A%0A%40app.cell%0Adef%20_(lfilter%2C%20np%2C%20plt%2C%20tempo_uniforme%2C%20x_mm%2C%20x_uniforme)%3A%0A%20%20%20%20b_ma%20%3D%20np.ones(4)%20%2F%204%0A%20%20%20%20a_ma%20%3D%20%5B1.0%5D%0A%20%20%20%20x_mm_2%20%3D%20lfilter(b_ma%2C%20a_ma%2C%20x_uniforme)%0A%20%20%20%20np.testing.assert_allclose(x_mm%5B3%3A%5D%2C%20x_mm_2%5B3%3A%5D)%0A%20%20%20%20_fig%2C%20_ax%20%3D%20plt.subplots(figsize%3D(8%2C%203))%0A%20%20%20%20_ax.plot(tempo_uniforme%2C%20x_uniforme%2C%20label%3D%22Original%22)%0A%20%20%20%20_ax.plot(tempo_uniforme%2C%20x_mm%2C%20label%3D%22for%22)%0A%20%20%20%20_ax.plot(tempo_uniforme%2C%20x_mm_2%2C%20%22--%22%2C%20label%3D%22lfilter%2C%20estado%20inicial%20zero%22)%0A%20%20%20%20_ax.set(xlabel%3D%22Tempo%20(s)%22%2C%20ylabel%3D%22x%20(m)%22)%0A%20%20%20%20_ax.legend()%0A%20%20%20%20_fig%0A%20%20%20%20return%20a_ma%2C%20b_ma%2C%20x_mm_2%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20**Exerc%C3%ADcio%204.**%20Para%20uma%20s%C3%A9rie%20constante%20de%20valor%208%2C%20quais%20s%C3%A3o%20as%20quatro%20primeiras%20sa%C3%ADdas%20de%20%60lfilter(%5B1%2F4%5D*4%2C%20%5B1%5D%2C%20x)%60%20sem%20estado%20inicial%3F%20Quando%20a%20sa%C3%ADda%20coincide%20com%20a%20m%C3%A9dia%20m%C3%B3vel%20completa%3F%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%2F%2F%2F%20details%20%7C%20Solu%C3%A7%C3%A3o%20do%20exerc%C3%ADcio%204%0A%0A%20%20%20%20As%20sa%C3%ADdas%20s%C3%A3o%202%2C%204%2C%206%20e%208.%20O%20filtro%20inicialmente%20completa%20o%20passado%20com%20zeros%3B%20a%20partir%20da%20quarta%20amostra%20h%C3%A1%20quatro%20valores%20reais%20na%20janela.%20Para%20este%20FIR%2C%20o%20la%C3%A7o%20e%20%60lfilter%60%20coincidem%20do%20%C3%ADndice%203%20em%20diante.%0A%20%20%20%20%2F%2F%2F%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20M%C3%A9dia%20m%C3%B3vel%20com%20%60filtfilt%60%3A%20fase%20zero%20e%20outra%20resposta%20de%20amplitude%0A%0A%20%20%20%20%60filtfilt%60%20aplica%20o%20filtro%20para%20frente%20e%20para%20tr%C3%A1s.%20Isso%20remove%20a%20fase%20no%20interior%2C%20mas%20eleva%20ao%20quadrado%20a%20resposta%20de%20magnitude%3A%20n%C3%A3o%20%C3%A9%20simplesmente%20deslocar%20a%20curva%20causal%20para%20a%20esquerda.%20O%20resultado%20depende%20de%20valores%20futuros%20e%20da%20extens%C3%A3o%20usada%20nas%20bordas.%20Compare%20x%20e%20y%2C%20como%20no%20roteiro%20original.%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(%0A%20%20%20%20a_ma%2C%0A%20%20%20%20b_ma%2C%0A%20%20%20%20filtfilt%2C%0A%20%20%20%20lfilter%2C%0A%20%20%20%20plt%2C%0A%20%20%20%20tempo_uniforme%2C%0A%20%20%20%20x_mm%2C%0A%20%20%20%20x_mm_2%2C%0A%20%20%20%20x_uniforme%2C%0A%20%20%20%20y_uniforme%2C%0A)%3A%0A%20%20%20%20x_mm_3%20%3D%20filtfilt(b_ma%2C%20a_ma%2C%20x_uniforme)%0A%20%20%20%20y_mm_2%20%3D%20lfilter(b_ma%2C%20a_ma%2C%20y_uniforme)%0A%20%20%20%20y_mm_3%20%3D%20filtfilt(b_ma%2C%20a_ma%2C%20y_uniforme)%0A%20%20%20%20_fig%2C%20_ax%20%3D%20plt.subplots(1%2C%202%2C%20figsize%3D(11%2C%204))%0A%20%20%20%20_ax%5B0%5D.plot(tempo_uniforme%2C%20x_uniforme%2C%20label%3D%22Original%22)%0A%20%20%20%20_ax%5B0%5D.plot(tempo_uniforme%2C%20x_mm%2C%20label%3D%22for%22)%0A%20%20%20%20_ax%5B0%5D.plot(tempo_uniforme%2C%20x_mm_2%2C%20label%3D%22lfilter%22)%0A%20%20%20%20_ax%5B0%5D.plot(tempo_uniforme%2C%20x_mm_3%2C%20label%3D%22filtfilt%22)%0A%20%20%20%20_ax%5B1%5D.plot(tempo_uniforme%2C%20y_uniforme%2C%20label%3D%22Original%22)%0A%20%20%20%20_ax%5B1%5D.plot(tempo_uniforme%2C%20y_mm_2%2C%20label%3D%22lfilter%22)%0A%20%20%20%20_ax%5B1%5D.plot(tempo_uniforme%2C%20y_mm_3%2C%20label%3D%22filtfilt%22)%0A%20%20%20%20for%20_a%2C%20_nome%20in%20zip(_ax%2C%20%5B%22x%22%2C%20%22y%22%5D)%3A%0A%20%20%20%20%20%20%20%20_a.set(xlabel%3D%22Tempo%20(s)%22%2C%20ylabel%3Df%22%7B_nome%7D%20(m)%22)%0A%20%20%20%20%20%20%20%20_a.legend()%0A%20%20%20%20_fig.tight_layout()%0A%20%20%20%20_fig%0A%20%20%20%20return%20y_mm_2%2C%20y_mm_3%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20Filtro%20Butterworth%0A%0A%20%20%20%20Mantemos%20a%20compara%C3%A7%C3%A3o%20original%3A%20um%20Butterworth%20de%20ordem%203%2C%20corte%20de%20projeto%20em%2010%20Hz%2C%20aplicado%20nos%20dois%20sentidos.%20A%20implementa%C3%A7%C3%A3o%20em%20se%C3%A7%C3%B5es%20de%20segunda%20ordem%20evita%20formar%20um%20%C3%BAnico%20polin%C3%B4mio%20de%20ordem%20alta.%20Com%20%60fs%3Dfs%60%2C%20a%20frequ%C3%AAncia%20de%20corte%20j%C3%A1%20%C3%A9%20fornecida%20em%20hertz.%0A%0A%20%20%20%20A%20ordem%20efetiva%20depois%20das%20duas%20passagens%20%C3%A9%206%20e%20a%20magnitude%20no%20corte%20de%20projeto%20%C3%A9%20aproximadamente%20%E2%88%926%20dB.%20As%20frequ%C3%AAncias%2010%20e%205%20Hz%20s%C3%A3o%20escolhas%20para%20esta%20atividade%2C%20n%C3%A3o%20valores%20universais.%20A%20faixa%20de%20Nyquist%20limita%20as%20escolhas%20v%C3%A1lidas.%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(%0A%20%20%20%20butter%2C%0A%20%20%20%20fs%2C%0A%20%20%20%20plt%2C%0A%20%20%20%20sosfiltfilt%2C%0A%20%20%20%20tempo_uniforme%2C%0A%20%20%20%20y_mm_2%2C%0A%20%20%20%20y_mm_3%2C%0A%20%20%20%20y_uniforme%2C%0A)%3A%0A%20%20%20%20fc_10%20%3D%20min(10.0%2C%200.4%20*%20fs)%0A%20%20%20%20sos_10%20%3D%20butter(N%3D3%2C%20Wn%3Dfc_10%2C%20fs%3Dfs%2C%20output%3D%22sos%22)%0A%20%20%20%20y_mm_4%20%3D%20sosfiltfilt(sos_10%2C%20y_uniforme)%0A%20%20%20%20_fig%2C%20_ax%20%3D%20plt.subplots(figsize%3D(9%2C%204))%0A%20%20%20%20_ax.plot(tempo_uniforme%2C%20y_uniforme%2C%20label%3D%22Original%22)%0A%20%20%20%20_ax.plot(tempo_uniforme%2C%20y_mm_2%2C%20label%3D%22M%C3%A9dia%20m%C3%B3vel%20causal%22)%0A%20%20%20%20_ax.plot(tempo_uniforme%2C%20y_mm_3%2C%20label%3D%22M%C3%A9dia%20m%C3%B3vel%20nos%20dois%20sentidos%22)%0A%20%20%20%20_ax.plot(tempo_uniforme%2C%20y_mm_4%2C%20label%3Df%22Butterworth%20N%3D3%2C%20%7Bfc_10%3A.2f%7D%20Hz%2C%20dois%20sentidos%22)%0A%20%20%20%20_ax.set(xlabel%3D%22Tempo%20(s)%22%2C%20ylabel%3D%22y%20(m)%22)%0A%20%20%20%20_ax.legend()%0A%20%20%20%20_fig%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20**Exerc%C3%ADcio%205.**%20Um%20filtro%20tem%20magnitude%201%2F%E2%88%9A2%20em%20certa%20frequ%C3%AAncia.%20Qual%20ser%C3%A1%20a%20magnitude%20depois%20da%20aplica%C3%A7%C3%A3o%20para%20frente%20e%20para%20tr%C3%A1s%3F%20E%20qual%20%C3%A9%20o%20atraso%20de%20uma%20m%C3%A9dia%20m%C3%B3vel%20de%20quatro%20pontos%20quando%20fs%3D120%20Hz%3F%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%2F%2F%2F%20details%20%7C%20Solu%C3%A7%C3%A3o%20do%20exerc%C3%ADcio%205%0A%0A%20%20%20%20A%20magnitude%20torna-se%20%24(1%2F%5Csqrt2)%5E2%3D1%2F2%24%2C%20aproximadamente%20%E2%88%926%2C02%20dB.%20O%20atraso%20de%20baixa%20frequ%C3%AAncia%20da%20m%C3%A9dia%20m%C3%B3vel%20causal%20%C3%A9%20%24(4-1)%2F(2f_s)%3D1%2C5%2F120%3D0%2C0125%24%20s.%20A%20fase%20zero%20n%C3%A3o%20elimina%20a%20atenua%C3%A7%C3%A3o%20de%20amplitude.%0A%20%20%20%20%2F%2F%2F%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20Filtrar%20antes%20de%20derivar%0A%0A%20%20%20%20O%20exemplo%20seguinte%20mant%C3%A9m%20a%20escolha%20original%20N%3D1%20e%205%20Hz%2C%20agora%20ajust%C3%A1vel.%20Observe%20a%20acelera%C3%A7%C3%A3o%2C%20al%C3%A9m%20da%20posi%C3%A7%C3%A3o.%20Reduzir%20o%20corte%20pode%20diminuir%20as%20oscila%C3%A7%C3%B5es%20e%20alterar%20a%20estimativa%20de%20g.%20Compare%20o%20trecho%20interior%20com%20as%20bordas%20usando%20os%20mesmos%20%C3%ADndices%20na%20grade%20uniforme.%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(fs%2C%20mo)%3A%0A%20%20%20%20_limite%20%3D%20float(0.4%20*%20fs)%0A%20%20%20%20corte%20%3D%20mo.ui.slider(start%3Dfloat(0.01%20*%20fs)%2C%20stop%3D_limite%2C%20value%3Dmin(5.0%2C%20_limite)%2C%20step%3Dfloat(0.005%20*%20fs)%2C%20label%3D%22Corte%20de%20projeto%20(Hz)%22)%0A%20%20%20%20corte%0A%20%20%20%20return%20(corte%2C)%0A%0A%0A%40app.cell%0Adef%20_(%0A%20%20%20%20butter%2C%0A%20%20%20%20corte%2C%0A%20%20%20%20dt%2C%0A%20%20%20%20fs%2C%0A%20%20%20%20np%2C%0A%20%20%20%20plt%2C%0A%20%20%20%20sosfiltfilt%2C%0A%20%20%20%20tempo_uniforme%2C%0A%20%20%20%20x_uniforme%2C%0A%20%20%20%20y_uniforme%2C%0A)%3A%0A%20%20%20%20sos_1%20%3D%20butter(N%3D1%2C%20Wn%3Dcorte.value%2C%20fs%3Dfs%2C%20output%3D%22sos%22)%0A%20%20%20%20x_filtrado%20%3D%20sosfiltfilt(sos_1%2C%20x_uniforme)%0A%20%20%20%20y_filtrado%20%3D%20sosfiltfilt(sos_1%2C%20y_uniforme)%0A%20%20%20%20dxdt_filtrado%20%3D%20np.gradient(x_filtrado%2C%20dt%2C%20edge_order%3D2)%0A%20%20%20%20dydt_filtrado%20%3D%20np.gradient(y_filtrado%2C%20dt%2C%20edge_order%3D2)%0A%20%20%20%20d2xdt2_filtrado%20%3D%20np.gradient(dxdt_filtrado%2C%20dt%2C%20edge_order%3D2)%0A%20%20%20%20d2ydt2_filtrado%20%3D%20np.gradient(dydt_filtrado%2C%20dt%2C%20edge_order%3D2)%0A%20%20%20%20ay_uniforme%20%3D%20np.gradient(np.gradient(y_uniforme%2C%20dt%2C%20edge_order%3D2)%2C%20dt%2C%20edge_order%3D2)%0A%20%20%20%20g_filtrado%20%3D%20-np.mean(d2ydt2_filtrado%5B10%3A-10%5D)%0A%20%20%20%20_fig%2C%20_ax%20%3D%20plt.subplots(figsize%3D(9%2C%204))%0A%20%20%20%20_ax.plot(tempo_uniforme%2C%20ay_uniforme%2C%20label%3D%22Sem%20filtro%20na%20grade%20uniforme%22)%0A%20%20%20%20_ax.plot(tempo_uniforme%2C%20d2ydt2_filtrado%2C%20label%3Df%22Filtrada%2C%20corte%20%7Bcorte.value%3A.2f%7D%20Hz%22)%0A%20%20%20%20_ax.set(xlabel%3D%22Tempo%20(s)%22%2C%20ylabel%3D%22Acelera%C3%A7%C3%A3o%20y%20(m%2Fs%C2%B2)%22)%0A%20%20%20%20_ax.legend()%0A%20%20%20%20_fig%0A%20%20%20%20return%20ay_uniforme%2C%20d2ydt2_filtrado%0A%0A%0A%40app.cell%0Adef%20_(ay_uniforme%2C%20d2ydt2_filtrado%2C%20np%2C%20pd)%3A%0A%20%20%20%20pd.DataFrame(%7B%22processamento%22%3A%20%5B%22sem%20filtro%22%2C%20%22Butterworth%20N%3D1%2C%20dois%20sentidos%22%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22m%C3%A9dia%20de%20ay%2C%20tudo%20(m%2Fs%C2%B2)%22%3A%20%5Bnp.mean(ay_uniforme)%2C%20np.mean(d2ydt2_filtrado)%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22m%C3%A9dia%20de%20ay%2C%20%5B10%3A-10%5D%20(m%2Fs%C2%B2)%22%3A%20%5Bnp.mean(ay_uniforme%5B10%3A-10%5D)%2C%20np.mean(d2ydt2_filtrado%5B10%3A-10%5D)%5D%7D)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20Frequ%C3%AAncia%20de%20corte%20pela%20an%C3%A1lise%20dos%20res%C3%ADduos%0A%0A%20%20%20%20%60optcutfreq%60%20examina%20a%20diferen%C3%A7a%20entre%20dados%20filtrados%20e%20n%C3%A3o%20filtrados%20ao%20longo%20de%20frequ%C3%AAncias%20de%20corte.%20Ele%20tenta%20identificar%20uma%20regi%C3%A3o%20dominada%20por%20ru%C3%ADdo.%20Essa%20escolha%20depende%20das%20hip%C3%B3teses%20sobre%20sinal%20e%20ru%C3%ADdo%3B%20o%20algoritmo%20pode%20n%C3%A3o%20encontrar%20um%20valor%20ou%20sugerir%20suaviza%C3%A7%C3%A3o%20excessiva.%20O%20filtro%20usado%20internamente%20pelo%20m%C3%A9todo%20n%C3%A3o%20%C3%A9%20id%C3%AAntico%20ao%20exemplo%20N%3D1%20acima.%0A%0A%20%20%20%20Inspecione%20o%20gr%C3%A1fico%20dos%20res%C3%ADduos%20e%20as%20derivadas.%20A%20palavra%20%E2%80%9C%C3%B3tima%E2%80%9D%20no%20nome%20do%20m%C3%A9todo%20n%C3%A3o%20significa%20que%20a%20acelera%C3%A7%C3%A3o%20verdadeira%20seja%20conhecida.%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(fs%2C%20mo%2C%20optcutfreq%2C%20y_uniforme)%3A%0A%20%20%20%20fc_opt%20%3D%20optcutfreq(y_uniforme%2C%20freq%3Dfs%2C%20show%3DTrue)%0A%20%20%20%20mo.md(%22A%20an%C3%A1lise%20n%C3%A3o%20encontrou%20um%20corte%20autom%C3%A1tico%3B%20examine%20os%20res%C3%ADduos%20e%20as%20hip%C3%B3teses.%22%20if%20fc_opt%20is%20None%20else%20f%22Corte%20sugerido%20pela%20an%C3%A1lise%20de%20res%C3%ADduos%3A%20**%7Bfc_opt%3A.3f%7D%20Hz**.%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20Uma%20compara%C3%A7%C3%A3o%20com%20o%20modelo%20de%20voo%20livre%0A%0A%20%20%20%20Se%20todo%20o%20trecho%20escolhido%20representar%20voo%20livre%20com%20acelera%C3%A7%C3%A3o%20constante%2C%20%24y(t)%3Dc_0%2Bc_1t%2Bc_2t%5E2%24%20implica%20%24g%3D-2c_2%24.%20Ajustar%20uma%20par%C3%A1bola%20usa%20a%20hip%C3%B3tese%20f%C3%ADsica%20diretamente%20e%20oferece%20uma%20compara%C3%A7%C3%A3o%20com%20a%20m%C3%A9dia%20da%20segunda%20derivada.%20N%C3%A3o%20use%20o%20ajuste%20para%20esconder%20contatos%20ou%20arrasto%20relevante.%20Para%20a%20atividade%2C%20compare%20tamb%C3%A9m%20os%20res%C3%ADduos%20do%20ajuste%20com%20a%20trajet%C3%B3ria.%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(np%2C%20plt%2C%20tempo%2C%20y)%3A%0A%20%20%20%20coef_parabola%20%3D%20np.polyfit(tempo%2C%20y%2C%202)%0A%20%20%20%20y_modelo%20%3D%20np.polyval(coef_parabola%2C%20tempo)%0A%20%20%20%20g_modelo%20%3D%20-2%20*%20coef_parabola%5B0%5D%0A%20%20%20%20_fig%2C%20_ax%20%3D%20plt.subplots(1%2C%202%2C%20figsize%3D(11%2C%203))%0A%20%20%20%20_ax%5B0%5D.plot(tempo%2C%20y%2C%20%22.%22%2C%20label%3D%22Medi%C3%A7%C3%A3o%22)%0A%20%20%20%20_ax%5B0%5D.plot(tempo%2C%20y_modelo%2C%20label%3D%22Par%C3%A1bola%20ajustada%22)%0A%20%20%20%20_ax%5B0%5D.set(xlabel%3D%22Tempo%20(s)%22%2C%20ylabel%3D%22y%20(m)%22)%0A%20%20%20%20_ax%5B0%5D.legend()%0A%20%20%20%20_ax%5B1%5D.plot(tempo%2C%20y-y_modelo)%0A%20%20%20%20_ax%5B1%5D.axhline(0%2C%20color%3D%22gray%22%2C%20lw%3D1)%0A%20%20%20%20_ax%5B1%5D.set(xlabel%3D%22Tempo%20(s)%22%2C%20ylabel%3D%22Res%C3%ADduo%20(m)%22)%0A%20%20%20%20_fig.tight_layout()%0A%20%20%20%20_fig%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20**Exerc%C3%ADcio%206.**%20Um%20ajuste%20fornece%20%24y(t)%3D0%2C2%2B3t-4%2C8t%5E2%24%2C%20em%20unidades%20SI.%20Qual%20%C3%A9%20a%20estimativa%20de%20g%3F%20A%20posi%C3%A7%C3%A3o%20do%20%C3%A1pice%20depende%20do%20filtro%20usado%20para%20construir%20esse%20ajuste%3F%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%2F%2F%2F%20details%20%7C%20Solu%C3%A7%C3%A3o%20do%20exerc%C3%ADcio%206%0A%0A%20%20%20%20A%20segunda%20derivada%20%C3%A9%20%E2%88%929%2C6%20m%2Fs%C2%B2%2C%20ent%C3%A3o%20g%3D9%2C6%20m%2Fs%C2%B2.%20Ajustar%20dados%20previamente%20filtrados%20pode%20alterar%20os%20coeficientes%20e%20o%20%C3%A1pice.%20Compare%20o%20ajuste%20nos%20dados%20medidos%20com%20alternativas%20e%20relate%20a%20cadeia%20de%20processamento.%0A%20%20%20%20%2F%2F%2F%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20Quest%C3%B5es%20de%20verifica%C3%A7%C3%A3o%0A%0A%20%20%20%201.%20Por%20que%20N%20posi%C3%A7%C3%B5es%20produzem%20N%E2%88%921%20velocidades%20por%20diferen%C3%A7as%20simples%3F%0A%20%20%20%202.%20Por%20que%20o%20primeiro%20intervalo%20da%20tabela%20n%C3%A3o%20deve%20ser%20ignorado%20na%20an%C3%A1lise%20de%20amostragem%3F%0A%20%20%20%203.%20Por%20que%20%60for%60%20e%20%60lfilter%60%20diferem%20nas%20tr%C3%AAs%20primeiras%20amostras%20deste%20exemplo%3F%0A%20%20%20%204.%20Fase%20zero%20significa%20aus%C3%AAncia%20de%20distor%C3%A7%C3%A3o%20de%20amplitude%3F%0A%20%20%20%205.%20Uma%20m%C3%A9dia%20de%20acelera%C3%A7%C3%B5es%20%C3%A9%20sempre%20uma%20estimativa%20v%C3%A1lida%20de%20g%3F%0A%20%20%20%206.%20O%20que%20voc%C3%AA%20deve%20fazer%20se%20%60optcutfreq%60%20devolver%20%60None%60%3F%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%2F%2F%2F%20details%20%7C%20Respostas%20%C3%A0s%20quest%C3%B5es%20de%20verifica%C3%A7%C3%A3o%0A%0A%20%20%20%201.%20H%C3%A1%20N%E2%88%921%20pares%20consecutivos%3B%20cada%20velocidade%20representa%20um%20intervalo.%0A%0A%20%20%20%202.%20Ele%20revela%20uma%20lacuna%3B%20usar%20um%20dt%20%C3%BAnico%20sem%20conferir%20os%20tempos%20muda%20a%20escala%20das%20derivadas.%0A%0A%20%20%20%203.%20O%20la%C3%A7o%20conserva%20os%20valores%20iniciais%20e%20o%20filtro%20causal%20come%C3%A7a%20com%20um%20passado%20nulo.%0A%0A%20%20%20%204.%20N%C3%A3o.%20As%20magnitudes%20das%20duas%20passagens%20se%20multiplicam%20e%20as%20bordas%20tamb%C3%A9m%20exigem%20aten%C3%A7%C3%A3o.%0A%0A%20%20%20%205.%20N%C3%A3o.%20%C3%89%20preciso%20voo%20livre%2C%20conven%C3%A7%C3%A3o%20de%20eixos%2C%20calibra%C3%A7%C3%A3o%20e%20processamento%20compat%C3%ADveis%3B%20contatos%20e%20ru%C3%ADdo%20podem%20invalidar%20a%20interpreta%C3%A7%C3%A3o.%0A%0A%20%20%20%206.%20Inspecionar%20a%20curva%20de%20res%C3%ADduos%20e%20as%20hip%C3%B3teses%3B%20n%C3%A3o%20tratar%20%60None%60%20como%20uma%20frequ%C3%AAncia%20num%C3%A9rica.%0A%20%20%20%20%2F%2F%2F%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20Problemas%0A%0A%20%20%20%201.%20Para%20%24y(t)%3D1%2B2t-4%2C905t%5E2%24%20m%2C%20determine%20a%20velocidade%20inicial%2C%20a%20acelera%C3%A7%C3%A3o%20vertical%2C%20g%20e%20o%20instante%20do%20%C3%A1pice.%0A%0A%20%20%20%202.%20Nos%20tempos%200%2C%200%2C01%20e%200%2C03%20s%2C%20x%20vale%200%2C%200%2C02%20e%200%2C06%20m.%20Determine%20as%20duas%20velocidades%20m%C3%A9dias%20sem%20impor%20amostragem%20uniforme.%0A%0A%20%20%20%203.%20No%20arquivo%20original%20da%20turma%2C%20obtenha%20g%20pela%20m%C3%A9dia%20de%20%60gradient(gradient(y%2Ct)%2Ct)%60%20com%20%60edge_order%3D2%60%20nas%20duas%20opera%C3%A7%C3%B5es%20e%20recorte%20%60%5B10%3A-10%5D%60.%20Compare%20com%20%60-2*c2%60%20no%20ajuste%20quadr%C3%A1tico%20de%20todas%20as%20posi%C3%A7%C3%B5es.%0A%0A%20%20%20%204.%20Um%20colega%20diz%20que%20no%20%C3%A1pice%20a%20gravidade%20deixa%20de%20atuar%2C%20pois%20a%20velocidade%20vertical%20%C3%A9%20zero.%20Qual%20%C3%A9%20a%20corre%C3%A7%C3%A3o%20f%C3%ADsica%3F%0A%0A%20%20%20%205.%20Refa%C3%A7a%20o%20protocolo%20com%20seus%20dados%20e%20relate%20a%20estimativa%20de%20g%2C%20a%20orienta%C3%A7%C3%A3o%20do%20eixo%2C%20a%20escala%2C%20a%20sele%C3%A7%C3%A3o%20de%20voo%2C%20a%20frequ%C3%AAncia%20de%20amostragem%2C%20o%20filtro%20e%20o%20recorte.%20Existe%20um%20%C3%BAnico%20n%C3%BAmero%20esperado%20para%20qualquer%20arquivo%3F%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%2F%2F%2F%20details%20%7C%20Respostas%20finais%20dos%20problemas%0A%0A%20%20%20%201.%20%24v_%7By0%7D%3D2%24%20m%2Fs%3B%20%24a_y%3D-9%2C81%24%20m%2Fs%C2%B2%3B%20%24g%3D9%2C81%24%20m%2Fs%C2%B2%3B%20%24t_%7B%C3%A1pice%7D%3D0%2C203874%24%20s.%0A%0A%20%20%20%202.%202%20m%2Fs%20e%202%20m%2Fs.%0A%0A%20%20%20%203.%20Para%20o%20arquivo%20original%3A%20m%C3%A9dia%20das%20derivadas%2C%20**9%2C839142%20m%2Fs%C2%B2**%3B%20ajuste%20quadr%C3%A1tico%2C%20**9%2C898626%20m%2Fs%C2%B2**.%20Diferen%C3%A7a%3A%20**0%2C059484%20m%2Fs%C2%B2**.%0A%0A%20%20%20%204.%20No%20%C3%A1pice%2C%20%24v_y%3D0%24%20instantaneamente%20e%20%24a_y%3D-g%24%20continua%20diferente%20de%20zero%20durante%20o%20voo%20livre%20ideal.%0A%0A%20%20%20%205.%20N%C3%A3o%20h%C3%A1%20resultado%20num%C3%A9rico%20universal.%20O%20relat%C3%B3rio%20deve%20conter%20o%20valor%20com%20unidade%2C%20as%20escolhas%20de%20aquisi%C3%A7%C3%A3o%2Fprocessamento%20e%20a%20sensibilidade%20dessas%20escolhas.%0A%20%20%20%20%2F%2F%2F%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20Para%20aprofundar%0A%0A%20%20%20%20-%20%5BAn%C3%A1lise%20de%20res%C3%ADduos%5D(https%3A%2F%2Fmolab.marimo.io%2Fgithub%2FBMClab%2FBMC%2Fblob%2Fmaster%2Fnotebooks%2Fresidual_analysis.py)%3A%20examine%20as%20hip%C3%B3teses%20usadas%20para%20sugerir%20uma%20frequ%C3%AAncia%20de%20corte.%0A%20%20%20%20-%20%5BFiltragem%20de%20dados%5D(https%3A%2F%2Fmolab.marimo.io%2Fgithub%2FBMClab%2FBMC%2Fblob%2Fmaster%2Fnotebooks%2Fdata_filtering.py)%3A%20relacione%20ordem%2C%20resposta%20em%20frequ%C3%AAncia%20e%20processamento%20em%20dois%20sentidos.%0A%20%20%20%20-%20%5BCinem%C3%A1tica%20de%20part%C3%ADculas%5D(https%3A%2F%2Fmolab.marimo.io%2Fgithub%2FBMClab%2FBMC%2Fblob%2Fmaster%2Fnotebooks%2Fkinematics_particle.py)%3A%20retome%20os%20significados%20f%C3%ADsicos%20de%20posi%C3%A7%C3%A3o%2C%20velocidade%20e%20acelera%C3%A7%C3%A3o.%0A%20%20%20%20-%20%5BLaborat%C3%B3rio%20de%20gravidade%5D(https%3A%2F%2Fmolab.marimo.io%2Fgithub%2FBMClab%2FBMC%2Fblob%2Fmaster%2Fnotebooks%2Flab_acel_gravidade.py)%20e%20%5Blaborat%C3%B3rio%20de%20filtros%5D(https%3A%2F%2Fmolab.marimo.io%2Fgithub%2FBMClab%2FBMC%2Fblob%2Fmaster%2Fnotebooks%2Flab_filtros.py)%3A%20compare%20os%20dois%20objetivos%20usando%20o%20mesmo%20conjunto%20de%20dados.%0A%0A%20%20%20%20%23%23%23%20Videoaulas%20na%20Internet%0A%0A%20%20%20%20-%20%5BMIT%20%E2%80%94%20Classical%20Mechanics%5D(https%3A%2F%2Focw.mit.edu%2Fcourses%2F8-01sc-classical-mechanics-fall-2016%2F)%3A%20as%20aulas%20iniciais%20de%20cinem%C3%A1tica%20e%20gravidade%20ajudam%20a%20interpretar%20a%20acelera%C3%A7%C3%A3o%20durante%20o%20voo%20livre%20(em%20ingl%C3%AAs).%0A%20%20%20%20-%20%5BMIT%20%E2%80%94%20Filtering%5D(https%3A%2F%2Focw.mit.edu%2Fcourses%2Fres-6-007-signals-and-systems-spring-2011%2Fresources%2Flecture-12-filtering%2F)%3A%20resposta%20de%20sistemas%20e%20efeito%20da%20filtragem%20(em%20ingl%C3%AAs).%0A%20%20%20%20-%20%5BMIT%20%E2%80%94%20Butterworth%20Filters%5D(https%3A%2F%2Focw.mit.edu%2Fcourses%2Fres-6-007-signals-and-systems-spring-2011%2Fresources%2Flecture-24-butterworth-filters%2F)%3A%20projeto%20e%20interpreta%C3%A7%C3%A3o%20da%20resposta%20em%20frequ%C3%AAncia%20(em%20ingl%C3%AAs).%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20Refer%C3%AAncias%0A%0A%20%20%20%20-%20Watanabe%2C%20R.%20N.%20(2022).%20Roteiros%20de%20laborat%C3%B3rio%20de%20Biomec%C3%A2nica%20I%20e%20arquivo%20%60massa_A.txt%60%2C%20material%20original%20deste%20reposit%C3%B3rio.%0A%0A%20%20%20%20-%20NumPy.%20%5Bgradient%5D(https%3A%2F%2Fnumpy.org%2Fdoc%2Fstable%2Freference%2Fgenerated%2Fnumpy.gradient.html)%20e%20%5Bdiff%5D(https%3A%2F%2Fnumpy.org%2Fdoc%2Fstable%2Freference%2Fgenerated%2Fnumpy.diff.html)%3A%20derivadas%20e%20diferen%C3%A7as%20discretas.%0A%0A%20%20%20%20-%20SciPy.%20%5Bbutter%5D(https%3A%2F%2Fdocs.scipy.org%2Fdoc%2Fscipy%2Freference%2Fgenerated%2Fscipy.signal.butter.html)%2C%20%5Blfilter%5D(https%3A%2F%2Fdocs.scipy.org%2Fdoc%2Fscipy%2Freference%2Fgenerated%2Fscipy.signal.lfilter.html)%2C%20%5Bfiltfilt%5D(https%3A%2F%2Fdocs.scipy.org%2Fdoc%2Fscipy%2Freference%2Fgenerated%2Fscipy.signal.filtfilt.html)%20e%20%5Bsosfiltfilt%5D(https%3A%2F%2Fdocs.scipy.org%2Fdoc%2Fscipy%2Freference%2Fgenerated%2Fscipy.signal.sosfiltfilt.html)%3A%20projeto%20e%20aplica%C3%A7%C3%A3o%20dos%20filtros%20usados%20aqui.%0A%0A%20%20%20%20-%20Duarte%2C%20M.%20%5Boptcutfreq%5D(https%3A%2F%2Fgithub.com%2Fdemotu%2Foptcutfreq)%3A%20implementa%C3%A7%C3%A3o%20e%20limita%C3%A7%C3%B5es%20da%20an%C3%A1lise%20de%20res%C3%ADduos%20proposta%20por%20Winter.%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0Aif%20__name__%20%3D%3D%20%22__main__%22%3A%0A%20%20%20%20app.run()%0A
ad1bd03a9686970dea91385a7ce62ed9