Escolar Documentos
Profissional Documentos
Cultura Documentos
Abril Julio 09
Laboratorio 01
Pregunta 1)
Escriba en un archivo llamado psilon_machine.m, una funcin que calcules el psilon
de la maquina. Compare su resultado con el comando psilon.
psilon_machine.m
function [e,iter,err]=epsilon_machine
err=0;
iter=0;
e=1;
while (1+e~=1)
iter=iter+1;
e=e/2;
end
e=2*e; %es el mayor valor 'antes' de que 1+e = e
err=abs(e-eps);
Pregunta 2)
Escriba un archivo llamado raz_p2.m una funcin que calcule las races de un polinomio
de grado dos usando las formulas usuales.
raz_p2.m
function [x1,x2]=raiz_p2(a,b,c)
delta=b^2-(4*a*c);% delta es el valor del discriminante
if a==0
error('Esta no es una ecuacion cuadratica')
end
if delta>=0
x1=(-b+sqrt(delta))/2*a;
x2=(-b-sqrt(delta))/2*a;
else
disp('discriminante negativo')
x1=(-b/2*a)+((i*sqrt(delta))/2*a);
x2=(-b/2*a)-((i*sqrt(delta))/2*a);
end
end
Escriba una funcin llamada eraiz_p2.m para obtener las races de un polinomio de
grado dos, similar a la anterior pero con la siguiente modificacin:
o Escoja una de las formulas usuales para calcular una de las races (escoja
la ms adecuada y justifique su eleccin). Luego, para calcular la otra raz
use la formula:
Al ejecutar ejercicio2.m se obtiene:
eraiz_p2.m
function [x1,x2]=eraiz_p2(a,b,c)
delta1=b^2-(4*a*c);
if a==0
error('Esta no es una ecuacion cuadratica')
end
% evaluamos que tan cercanos son los valores de b y (b^2-(4*a*c)^(1/2),
% porque si son cercanos al restarse ocacionaran errores de cancelacin
dif1=abs(b-sqrt(delta1));
if delta1>=0
if dif1>1 %si no hay riesgo de cancelacin, se restan
x1=(-b+sqrt(delta1))/2*a;
x2=c/a*x1;
else % si hay riesgo de ancelacin se suman
x2=(-b-sqrt(delta1))/2*a;
x1=c/a*x2;
end
else
disp('discriminante negativo')
if dif1>1 %si no hay riesgo de cancelacin, se restan
x1=(-b/2*a)+((i*sqrt(delta1))/2*a);
x2=c/a*x1;
else % si hay riesgo de ancelacin se suman
x2=(-b/2*a)-((i*sqrt(delta1))/2*a);
x1=c/a*x2;
end
end
end
Polinomio
Mtodo
Raz
Raz encontrada
a=1
b= 1e-4
c=10
raz_p2.m
X1
-0.000050000000000
3.162227659773095i
-0.000050000000000
3.162327659773094i
-0.000050000000000
3.162327659773094i
-0.000050000000000
3.162327659773094i
-0.000000005000000
3.162277665168380i
-0.000000005000000
3.162277655168380i
-0.000000005000000
3.162277665168380i
-0.000000005000000
3.162277665168380i
X2
eraiz_p2.m
X1
X2
a=1
b= 1e-8
c=10
raz_p2.m
X1
X2
eraiz_p2.m
X1
X2
Raz exacta
(Mat roots[a b c])
+
+
+
+
-
-0.000050000000000
3.162277659773095i
-0.000050000000000
3.162277659773095i
-0.000050000000000
3.162277659773095i
-0.000050000000000
3.162277659773095i
-0.000000005000000
3.162277660168380i
-0.000000005000000
3.162277660168380i
-0.000000005000000
3.162277660168380i
-0.000000005000000
3.162277660168380i
Error Absoluto
+
+
Pregunta 3)
Escriba una funcin llamada taylorexp.m que calcule
de Taylor de grado n.
taylorexp.m
function [e,err]=taylorexp(x,n)
e=0;
for i=0:n
e=(x^i)/(factorial(i))+e;
err=(abs(e-exp(x)))/(exp(x));%calculo del error relativo de la aproximacion
end
end