% f: funcion a la que se va a sacar el cero
% a, b: limites del intervalo
% delta: error absoluto maximo
f = @(x)(x*sin(x)-1);
a = 0;
b = 2;
delta = 0.00001;
% ya: valor de la funcion en a
% yb valor de la funcion en b
% yc: valor de la funcion en c
% err: error de la ultima iteracion
% maxi: maximo de iteraciones
ya = f(a);
yb = f(b);
if ya * yb > 0
disp "No existe una raiz en el intervalo"
break
end
maxi = 1 + round((log(b-a)-log(delta))/log(2));
for k = 1:maxi
c = (a+b) / 2;
yc = f(c);
if yc == 0
a = c;
b = c;
elseif yb*yc > 0
b = c;
yb = yc;
else
a = c;
ya = yc;
end
if b-a < delta
break
end
end
c = (a+b) / 2;
err = abs(b-a);
yc = f(c);
% mostrar resultados
printf("La aproximación al cero es: %10.6f\n",c);
printf("Con un error absoluto menor a %8.6f\n",err);
printf("El valor de la funcion en la aproximacion es %10.8f\n",yc);
entity behavioral is port ( Planta_Baja : in std_logic; Piso_Uno : in std_logic; Piso_Dos : in std_logic; salidas : out std_logic_vector(1 downto 0) -- para polarizar el motor, tierra y voltaje por eso se require los dos bits ); end behavioral architecture AscMealy of behavioral is type ascEstados is (PB, 1, 2); signal Estados, prox_estados AscEstados; begin Process(Planta_Baja, Piso_Uno, Piso_Dos, Estado) begin Case PB => if (Planta_Baja = '1')then Prox_estado <= 1; else Prox_estado <= PB; endif; case 1 => if (Piso_Uno = '1')then Prox_estado <= 2; else prox_estado <= 1; endif; case 2 => if (Piso_Dos = '1')then Prox_estado <= 1; else prox_estado <= 2; endif; end Process; Process (reloj, Reset) begin if (Reset = '1')then estado <= PB; elsif (clk'event and clk = '1') then ...
Comments