Guia Matlab
Universidad Politécnica de Madrid
Enunciado:
Escribir la función s=raiz(a) que calcula la raíz cuadrada del valor a con un error menor de 10-8 y el mínimo número de operaciones. Indicar el número exacto de sumas/restas y multiplicaciones/divisiones necesarias. Utilizar el método de Newton. Aplicar el código a algunos ejemplos para comprobar que funciona correctamente.
Solución:
function s=raiz(a)
n=floor(log(a)/log(2));
if floor(n/2)==(n/2)
m=n;c=a/(2^n); % 1 potencia + 1 división
else
m=n-1;c=a/(2^(n-1)); % 1 potencia + 1 división
end
x=(2+c)/3; % 1 suma + 1 division
x=(x+c/x)/2; % 1 suma + 2 division
x=(x+c/x)/2; % 1 suma + 2 division
x=(x+c/x)/2; % 1 suma + 2 division
s=x*2^(m/2); % 1 suma + 1 division + 1 potencia
return
El número de sumas/restas es de 5 sumas
El número de multiplicaciones/divisiones es de 2 multiplicaciones y 9 divisiones
% Comprobacion
>> a=3;abs(raiz(a)-sqrt(a))
ans =
6.5059e-014