% 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);
library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity Multimetro is port( clk: in std_logic; tst: inout std_logic_vector (3 downto 0); display: out std_logic_vector (7 downto 0):="00000000"; leds, anodos: out std_logic_vector (3 downto 0):="0000"); end Multimetro; architecture Behavioral of Multimetro is signal barrido: std_logic_vector (1 downto 0):="00"; signal anodo: std_logic_vector (3 downto 0):="0000"; signal contador: std_logic_vector (3 downto 0):="0000"; signal disp,disp1,disp2,disp3: std_logic_vector (7 downto 0):="00000010"; signal x,y,z,w: std_logic_vector (3 downto 0):="0000"; begin process(clk) begin if(clk'event and clk='1') then barrido<=barrido+'1'; if contador contador<=contador+'1'; elsif contador>tst then contador<="0000...
Comments