#N canvas 546 127 661 578 10; #X obj 53 37 inlet; #X obj 53 495 outlet; #X msg 135 35 0 0.392699; #X floatatom 115 496 10 0 0 0 - - -; #X msg 215 35 0.785398 1.1781; #X msg 334 35 1.5708 1.9635; #X msg 334 63 2.35619 2.74889; #X msg 334 94 3.14159 2.74889; #X text 458 37 valores de exemplo usados para calibrar os filtros do [equalizador~] linear., f 26; #X text 423 134 implementação em Lua da busca binária para um valor R entre [0...0 \, 999] que satisfaz o critério do decaimento estipulado pelo enunciado., f 30; #X obj 53 130 ofelia d -c11 \; --[[ função para calcular a diferença ]] \; --[[ entre os dois lados da equação ]] \; function delta(R \, fia \, fib) \; return ((R*math.cos(fia)-math.cos(fib))^2+(R*math.sin(fia)-math.sin(fib))^2)*((R*math.cos(fia)-math.cos(fib))^2+(R*math.sin(fia)+math.sin(fib))^2) - 4*(1-R)^2*((math.cos(fia)-R*math.cos(fia))^2+(math.sin(fia)+R*math.sin(fia))^2) \; end \; --[[ recebe os valores de fia e fib numa lista ]] \; --[[ e obtém R ótimo por busca binária ]] \; function ofelia.list(l) \; local fia=l[1] \; local fib=l[2] \; local R0=0 \; local R1=0.999 \; local R2=0 \; while math.abs(delta(R0 \, fia \, fib)-delta(R1 \, fia \, fib))>1e-4 do \; R2=(R0+R1)/2 \; if delta(R2 \, fia \, fib)<0 then R0=R2 else R1=R2 end \; end \; return R1 \; end \;; #X connect 0 0 10 0; #X connect 2 0 10 0; #X connect 4 0 10 0; #X connect 5 0 10 0; #X connect 6 0 10 0; #X connect 7 0 10 0; #X connect 10 0 1 0; #X connect 10 0 3 0;