Práctica 1: Aritmética de la computadora y análisis de errores
Enviado por IAN ULISES TRUJILLO BARRIENTOS • 3 de Septiembre de 2023 • Práctica o problema • 2.070 Palabras (9 Páginas) • 93 Visitas
[pic 1]UNIVERSIDAD AUTONOMA METROPOLITANA
CIENCIAS BASICAS E INGENIERIA
METODOS NUMERICOS
PRACTICA 1: ARITMETICA DE LA COMPUTADORA Y ANALISIS DE ERRORES
GRUPO: CSI04
PROFESOR: ALEJANDRO CRUZ SANDOVAL
INTEGRANTES: MATRICULA:
TRUJILLO BARRIENTOS IAN ULISES 2182001067
CASTILLO PEREZ MANUEL OMAR 2213030429
GRANADOS GONZALEZ JUAN CARLOS 2203030275
GARCIA HERNANDEZ MARIA FERNANDA 2213031720
INTRODUCCION:
Como principio fundamental, definimos a los métodos numéricos como una sucesión de operaciones matemáticas utilizadas para encontrar una solución numérica aproximada a un problema determinado.
Estos métodos son recurrentes en la ingeniería, y sirven para realizar de manera más simple problemas con una cantidad considerable de cálculos, que, a su vez, pueden ser realizados de manera analítica mediante el uso de algoritmos matemáticos.
Por su parte, el ordenador es el encargado de ejecutar estos métodos, pero cuenta con sus limitantes al ser un dispositivo finito, ya que los números que almacena pueden contar con un sinfín de dígitos que a su vez no podrá representar de manera lógica.
Para almacenar estos números en el ordenador, se hace uso de los formatos enteros y en punto flotante, aunque esta vez nos compete la representación tanto decimal como binaria en punto flotante o la norma IEEE 754, la cual es una representación de esta misma y es usada por la mayoría de los procesadores.
Hay que tomar en cuenta los distintos errores a base de inexactitudes que pueden presentarse en el uso del software, ya que pueden provocar un resultado erróneo o una catástrofe en casos más especializados, pero, para esta práctica aprenderemos a diferenciar el cómo se altera una variable de tipo decimal (float) al ser sustituida por una de doble precisión (double).
Hasta este punto, ya podemos hablar de la exactitud del almacenamiento en punto flotante, teniendo como medidas habituales la épsilon de la máquina y el entero más grande los cuales también pueden variar tomando en cuenta el tipo de precisión que se emplea
PRACTICA.
1. ¿Cuál es el resultado de ejecutar el siguiente programa en su computadora? Declare las variables como reales (punto flotante). Pasar los programas a Matlab y verificar resultados comparándolos con los obtenidos en C
[pic 2]
CODIGO EN MATLAB:[pic 3]
El resultado es: 1.000000e+00 1.110223e-16
[pic 4]Procedemos a verificar por código en C.
Mostrando que el resultado es: 1.000000e+00 -1.192093e-07
Se puede mostrar que el valor de 0.1 (siendo h), por ser flotante se muestra un cierto error muy pequeño, sin embargo, al hacer la suma dicho error se acumula lo que nos lleva a obtener como resultado un numero un poquito más grande que 1.
Así que cuando restamos esa cantidad obtenida al valor de 1 pues el resultado da una cifra negativa muy pequeña y un tanto cercana a cero, pero diferente de él.
Esto sucede porque al tomar números tan grandes pues existe un error que va aumentando y en el resultado y puede desprenderse de ciertas cantidades que van variando de lo esperado e incluso que a la larga pueden ser un tanto perjudiciales.
2. ¿El número decimal 01 es representado exactamente en su computadora?, o qué número es representado.
R: Se pudo observar que al correr el programa no se representa el numero 0.1 ya que esto va dependiendo a la computadora junto el tipo de variable que se use y como la puedas nombrar. Pero entre el entero y entero largo obviamente no se puede representar, el flotante y doble flotante con cinco ceros a su derecha.
3. Ejecute el problema (1), sólo que ahora declare las variables como doble precisión.
[pic 5][pic 6]
4.Del problema (1) y (2) qué conclusiones tiene.
La conclusión que obtengo es que forme a los resultados obtenidos, al ejecutar los programas tanto en C como en Matlab y sus diferentes precisiones al declarar las variables como flotante se obtuvo un resultado positivo y también muy pequeño.
Por lo tanto, pues este resultado es muy cercano a cero, pero por parte de abajo es aún mucho más cerca que cuando lo vas obtenido con valores flotantes. Y esto se debe a que la computadora puede trabajar con más bits que en flotante, entonces el error que acarrea es mucho más pequeño y se pueden obtener resultados más precisos.
5. El número Z=3.14 159 265 358 es exactamente representado en su computadora, (1) ¿Cómo un entero?, (2) como un doble entero, (3) como un número de punto flotante de precisión simple, (4) como un número flotante de doble precisión.
Como un float de doble precisión
6. De los siguientes programas en C, ejecútelos y muestre salidas en pantalla y saque conclusiones de los resultados obtenidos.
[pic 7]
[pic 8]
Ejercicio a) Lenguaje c
//Programa 6.a
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main( )
{
float eps,eps1;
eps=1.0;
inicio:
eps=eps/2.;
printf("\n el resultado es:%e\n\n",eps);
eps1=eps+1;
if(eps1>1.0) goto inicio;
getchar();
}
[pic 9]
Ahora declaramos las variables como doble precisión.
[pic 10]
Como podemos observar, al compilar, el último valor obtenido corresponde a la épsilon de la máquina, en este caso de 64 bits, lo cual refiere al menor valor decimal que presenta determinada máquina.
Por definición, sabemos que la épsilon es el número decimal más pequeño que, sumado a 1, la computadora nos arroja un valor diferente de 1, es decir, que no es redondeado.
...