Professional Documents
Culture Documents
Facultad de Informática
Cálculo numérico
ITI de Sistemas
March 5, 2010
1 Introducción
He utilizado MAXIMA para resolver los ejercicios de la práctica sobre el
método de bisección y he implementado el siguiente algoritmo de bisección:
bisec(arg):=block([a:arg[1],b:arg[2],g:arg[3],xm:bfloat((arg[1]+arg[2])/2)],
if(ev(g,x=xm)*ev(g,x=a)¡=0)then[a,xm,g] else [xm,b,g]);
2 Ejercicio 1
En este ejercicio hay que hayar las raices del siguiente polinomio:
2
Una vez analizada la función se ejecuta un bucle con el método de bisección
para calcular una aproximación a las raices. El bucle utilizado en este caso y su
salida son los siguientes (el intervalo inicial es el (-1,1)):
-1.0,1.0 -2.509355545043945b-5,-2.503395080566406b-5
-1.0,0.0b0 -2.506375312805176b-5,-2.503395080566406b-5
-5.0b-1,0.0b0 -2.504885196685791b-5,-2.503395080566406b-5
-2.5b-1,0.0b0 -2.504885196685791b-5,-2.504140138626099b-5
-1.25b-1,0.0b0 -2.504512667655945b-5,-2.504140138626099b-5
-6.25b-2,0.0b0 -2.504512667655945b-5,-2.504326403141022b-5
-3.125b-2,0.0b0 -2.504419535398483b-5,-2.504326403141022b-5
-1.5625b-2,0.0b0 -2.504419535398483b-5,-2.504372969269753b-5
-7.8125b-3,0.0b0 -2.504396252334118b-5,-2.504372969269753b-5
-3.90625b-3,0.0b0 -2.504384610801935b-5,-2.504372969269753b-5
-1.953125b-3,0.0b0 -2.504378790035844b-5,-2.504372969269753b-5
-9.765625b-4,0.0b0 -2.504375879652798b-5,-2.504372969269753b-5
-4.8828125b-4,0.0b0 -2.504374424461275b-5,-2.504372969269753b-5
-2.44140625b-4,0.0b0 -2.504373696865514b-5,-2.504372969269753b-5
-1.220703125b-4,0.0b0 -2.504373333067633b-5,-2.504372969269753b-5
-6.103515625b-5,0.0b0 -2.504373151168693b-5,-2.504372969269753b-5
-3.0517578125b-5,0.0b0 -2.504373060219223b-5,-2.504372969269753b-5
-3.0517578125b-5,-1.52587890625b-5 -2.504373014744488b-5,-2.504372969269753b-5
-3.0517578125b-5,-2.288818359375b-5 -2.504373014744488b-5,-2.50437299200712b-5 -
-2.6702880859375b-5,-2.288818359375b-5 2.504373014744488b-5,-2.504373003375804b-5
-2.6702880859375b-5,-2.47955322265625b-5 -2.504373014744488b-5,-2.504373009060146b-5
-2.574920654296875b-5,-2.47955322265625b-5 -2.504373011902317b-5,-2.504373009060146b-5
-2.527236938476563b-5,-2.47955322265625b-5 -2.504373010481231b-5,-2.504373009060146b-5
-2.527236938476563b-5,-2.503395080566406b-5 -2.504373009770688b-5,-2.504373009060146b-5
-2.515316009521484b-5,-2.503395080566406b-5 -2.504373009415417b-5,-2.504373009060146b-5
3
3 Ejercicio 2
1
Se nos pide que calculemos una aproximación de la fracción , para ello
2.5
1
utilizaremos la función f (x) = x − .
2.5
Una vez analizada la gráfica vemos que hay una raiz entre 0 y 1 con lo que
aplicamos el método de bisección en ese intervalo. La instrucción en MAXIMA
es la siguiente:
0.0,1.0 3.999996185302734b-1,4.000005722045898b-1
0.0,5.0b-1 3.999996185302734b-1,4.000000953674316b-1
2.5b-1,5.0b-1 3.999998569488525b-1,4.000000953674316b-1
3.75b-1,5.0b-1 3.99999976158142b-1,4.000000953674316b-1
3.75b-1,4.375b-1 3.99999976158142b-1,4.000000357627868b-1
3.75b-1,4.0625b-1 3.99999976158142b-1,4.000000059604644b-1
3.90625b-1,4.0625b-1 3.999999910593032b-1,4.000000059604644b-1
3.984375b-1,4.0625b-1 3.999999985098838b-1,4.000000059604644b-1
3.984375b-1,4.0234375b-1 3.999999985098838b-1,4.000000022351741b-1
3.984375b-1,4.00390625b-1 3.999999985098838b-1,4.00000000372529b-1
3.994140625b-1,4.00390625b-1 3.999999994412064b-1,4.00000000372529b-1
3.9990234375b-1,4.00390625b-1 3.999999999068677b-1,4.00000000372529b-1
3.9990234375b-1,4.00146484375b-1 3.999999999068677b-1,4.000000001396983b-1
3.9990234375b-1,4.000244140625b-1 3.999999999068677b-1,4.00000000023283b-1
3.9996337890625b-1,4.000244140625b-1 3.999999999650754b-1,4.00000000023283b-1
3.99993896484375b-1,4.000244140625b-1 3.999999999941792b-1,4.00000000023283b-1
3.99993896484375b-1,4.000091552734375b-1 3.999999999941792b-1,4.000000000087311b-1
3.99993896484375b-1,4.000015258789062b-1 3.999999999941792b-1,4.000000000014551b-1
3.999977111816406b-1,4.000015258789062b-1 3.999999999978172b-1,4.000000000014551b-1
3.999996185302734b-1,4.000015258789062b-1 3.999999999996362b-1,4.000000000014551b-1
4
3.999999999996362b-1,4.000000000005456b-1 3.999999999999999b-1,4.000000000000003b-1
3.999999999996362b-1,4.000000000000909b-1 3.999999999999999b-1,4.000000000000001b-1
3.999999999998635b-1,4.000000000000909b-1 3.999999999999999b-1,4.0b-1
3.999999999999772b-1,4.000000000000909b-1 3.999999999999999b-1,4.0b-1
3.999999999999772b-1,4.000000000000341b-1 3.999999999999999b-1,4.0b-1
3.999999999999772b-1,4.000000000000056b-1 4.0b-1,4.0b-1
3.999999999999914b-1,4.000000000000056b-1 4.0b-1,4.0b-1
3.999999999999985b-1,4.000000000000056b-1 4.0b-1,4.0b-1
3.999999999999985b-1,4.000000000000021b-1 4.0b-1,4.0b-1
3.999999999999985b-1,4.000000000000003b-1
3.999999999999994b-1,4.000000000000003b-1
Como se puede ver al final de la ejecución los dos extremos del intervalo valen
0.4 con lo que podrı́amos decir que hemos hallado la solución y de hecho ası́
es. Aunque realmente lo que ha ocurrido es que hemos agotado la precisión
de MAXIMA y el resultado se ha aproximado a 0.4. Puesto que como ahora
veremos en todas las ejecuciones se están cometiendo errores.
5
El número de dı́gitos correctos de cada iteración se puede deducir a partir del
error absoluto. Ası́ el número de dı́gitos correctos serı́a el número de dı́gitos que
tras restar o sumar el error absoluto al intervalo no vieran modificado su valor.
Por supuesto serı́an sólo los dı́gitos que estuvieran a la izquierda del primero
que modifica su valor.
4 Ejercicio 3
En este ejercicio se nos pide que hallemos el número mı́nimo de ordenadores que
tiene que vender una empresa ensambladora para obtener beneficios. Para ello
se nos proporciona una fórmula que calcula los ingresos o pérdidas generados
tras la producción de un número x de ordenadores:
40 ∗ x1.5 − 875 ∗ x + 35000 = 0
Podemos ver la gráfica de la función en el intervalo (0,500) dónde se observa
que la función tiene dos raices. Sin embargo no vamos a considerar la menor de
las raices como una solución, ya que si la producción aumenta por encima de
ella la empresa comenzará a tener pérdidas. Mientras que nosotros queremos
saber a partir de que cantidad de ordenadores vendidos la empresa empezará a
obtener beneficios. Parece claro viendo el gráfico que la raı́z que nos interesa es
la segunda a partir de la cuál los beneficios se incrementa si aumenta el número
de ordenadores vendidos.
6
Hemos escogido el intervalo (384,384.5) para aplicar el método de bisección, de
tal modo que la instrucción en MAXIMA serı́a la siguiente:
ini:[384,384.5,40*x^1.5-875*x+35000]; for i:1 thru 40 do (print((ini[1])+0.0,",",ini[2]+0.0), ini:bisec(ini));
384.0,384.5 3.840222768783569b2,3.84022277355194b2
384.0,3.8425b2 3.840222771167755b2,3.84022277355194b2
384.0,3.84125b2 3.840222772359848b2,3.84022277355194b2
384.0,3.840625b2 3.840222772955894b2,3.84022277355194b2
384.0,3.8403125b2 3.840222773253917b2,3.84022277355194b2
3.84015625b2,3.8403125b2 3.840222773402929b2,3.84022277355194b2
3.84015625b2,3.840234375b2 3.840222773477435b2,3.84022277355194b2
3.8401953125b2,3.840234375b2 3.840222773514688b2,3.84022277355194b2
3.84021484375b2,3.840234375b2 3.840222773514688b2,3.840222773533314b2
3.84021484375b2,3.840224609375b2 3.840222773524001b2,3.840222773533314b2
3.8402197265625b2,3.840224609375b2 3.840222773524001b2,3.840222773528657b2
3.84022216796875b2,3.840224609375b2 3.840222773526329b2,3.840222773528657b2
3.84022216796875b2,3.840223388671875b2 3.840222773526329b2,3.840222773527493b2
3.84022216796875b2,3.840222778320312b2 3.840222773526911b2,3.840222773527493b2
3.840222473144531b2,3.840222778320312b2 3.840222773526911b2,3.840222773527202b2
3.840222625732421b2,3.840222778320312b2 3.840222773527057b2,3.840222773527202b2
3.840222702026367b2,3.840222778320312b2 3.840222773527129b2,3.840222773527202b2
3.840222740173339b2,3.840222778320312b2 3.840222773527129b2,3.840222773527166b2
3.840222759246826b2,3.840222778320312b2 3.840222773527148b2,3.840222773527166b2
3.840222768783569b2,3.840222778320312b2 3.840222773527157b2,3.840222773527166b2
0.25 0.001953125
0.125 9.765625 ∗ 10− 4
0.0625 4.8828125 ∗ 10− 4
0.03125 2.44140625 ∗ 10− 4
0.015625 1.220703125 ∗ 10− 4
0.0078125 6.103515625 ∗ 10− 5
0.00390625 3.0517578125 ∗ 10− 5
7
1.52587890625 ∗ 10− 5 9.3132257461547852 ∗ 10− 10
7.62939453125 ∗ 10− 6 4.6566128730773926 ∗ 10− 10
3.814697265625 ∗ 10− 6 2.3283064365386963 ∗ 10− 10
1.9073486328125 ∗ 10− 6 1.1641532182693481 ∗ 10− 10
9.5367431640625 ∗ 10− 7 5.8207660913467407 ∗ 10− 11
4.76837158203125 ∗ 10− 7 2.9103830456733704 ∗ 10− 11
2.384185791015625 ∗ 10− 7 1.4551915228366852 ∗ 10− 11
1.1920928955078125 ∗ 10− 7 7.2759576141834259 ∗ 10− 12
5.9604644775390625 ∗ 10− 8 3.637978807091713 ∗ 10− 12
2.9802322387695312 ∗ 10− 8 1.8189894035458565 ∗ 10− 12
1.4901161193847656 ∗ 10− 8 9.0949470177292824 ∗ 10− 13
7.4505805969238281 ∗ 10− 9 4.5474735088646412 ∗ 10− 13
3.7252902984619141 ∗ 10− 9
1.862645149230957 ∗ 10− 9
Como se puede ver hemos escogido el menor valor del último intervalo generado
por el método de bisección, puesto que este es el más cercano a la raiz que
tenemos. Además sabemos que estamos teniendo en cuenta el mayor error
relativo posible al dividir por el menor valor posible para la raiz.