Documentos de Académico
Documentos de Profesional
Documentos de Cultura
MARCOS
FIEE
FIEE-UNMSM 1
Estructuras
Las estructuras nos permiten agrupar varios datos, que mantengan
algún tipo de relación, aunque sean de distinto tipo, permitiendo
manipularlos todos juntos, usando un mismo identificador, o cada uno
por separado.
Las estructuras son llamadas también muy a menudo registros, o en
inglés records. Tienen muchos aspectos en común con los registros
usados en bases de datos. Y siguiendo la misma analogía, cada objeto
de una estructura se denomina a menudo campo, o field.
• sintaxis
struct [<identificador>] {
[<tipo> <nombre_objeto>[,<nombre_objeto>,...]];
} [<objeto_estructura>[,<objeto_estructura>,...];
FIEE- UNMSM 2
El identificador de la estructura es un nombre opcional para referirse a la estructura.
En el interior de una estructura, entre las llaves, se pueden definir todos los
elementos que consideremos necesarios, del mismo modo que se declaran los
objetos.
FIEE- UNMSM 3
Ejemplo de estructura
FIEE- UNMSM 4
Inicialización de la estructura
• De un modo parecido al que se inicializan los arrays, se pueden inicializar estructuras, tan
sólo hay que tener cuidado con las estructuras anidadas.
FIEE- UNMSM 5
• La asignación de estructuras está permitida, pero sólo entre objetos del
mismo tipo de estructura, (salvo que se usen constructores), y funciona
como la intuición nos dice que debe hacerlo.
FIEE-UNMSM 6
Usando constructores en estructuras
• Crearemos como ejemplo, una estructura para manejar números
complejos. Un número complejo está compuesto por dos valores
reales, el primero contiene lo que se llama la parte real y el segundo la
parte imaginaria.
FIEE- UNMSM 7
• El constructor por defecto será llamado para cada elemento del array,
aunque no aparezca tal llamada en ningún punto del programa.
• Otro constructor nos puede servir para asignar un valor a partir de dos
números:
FIEE- UNMSM 8
• Los números reales se consideran un subconjunto de los imaginarios,
en los que la parte imaginaria vale cero. Esto nos permite crear otro
constructor que sólo admita un valor real:
Este constructor nos permite, como en el caso anterior, inicializar un valor de un complejo en la
declaración, pero también nos permite asignar un valor double a un complejo, y por el sistema
de promoción automático, también podemos asignar valores enteros o en coma flotante:
FIEE- UNMSM 9
Este tipo de constructores se comportan como conversores de tipo, nada nos impide
crear constructores con cualquier tipo de parámetro, y tales constructores se podrán
usar para convertir cualquier tipo al de nuestra estructura.
FIEE- UNMSM 10
Funciones Parte II- Parámetros por valor y por referencia
• La forma en que hemos declarado y pasado los parámetros de las funciones hasta ahora es la que
normalmente se conoce como "por valor". Esto quiere decir que cuando el control pasa a la
función, los valores de los parámetros en la llamada se copian a "objetos" locales de la función,
estos "objetos" son de hecho los propios parámetros.
Empezamos haciendo a = 10 y b = 20, después llamamos a la función "funcion" con las objetos a y b como parámetros.
Dentro de "funcion" esos parámetros se llaman n y m, y sus valores son modificados. Sin embargo al retornar a main, a y
b conservan sus valores originales. ¿Por qué?
La respuesta es que lo que pasamos no son los objetos a y b, sino que copiamos sus valores a los objetos n y m.
Si los parámetros por valor no funcionasen
Escuela de así, no Generales
Estudios sería posible llamar a una función con valores constantes o11literales.
- UNMSM
Referencias a objetos
FIEE- UNMSM 12
• La segunda forma es la que se usa para definir parámetros por
referencia en funciones, en estos casos, las asignaciones son
implícitas.
• Ejemplo:
En este ejemplo los identificadores a y r se refieren al
mismo objeto, cualquier cambio en una de ellos se
produce en el otro, ya que son, el mismo objeto.
FIEE- UNMSM 14
• En este caso, los objetos "a" y "b" tendrán valores
distintos después de llamar a la función. Cualquier
cambio de valor que realicemos en los parámetros
dentro de la función, se hará también en los objetos
referenciadas.
FIEE- UNMSM 15
Programa que suma dos matrices usando funciones
1
FIEE- UNMSM 16
Sobrecarga de funciones
• Anteriormente hemos visto operadores que tienen varios usos, como por
ejemplo *, &, << o >>. Esto se llama sobrecarga de operadores.
• Con las funciones existe un mecanismo análogo, de hecho, en C++, los
operadores no son sino un tipo especial de funciones, aunque eso sí, algo
peculiares.
• Así que en C++ podemos definir varias funciones con el mismo nombre, con la
única condición de que el número y/o el tipo de los argumentos sean distintos.
El compilador decide cual de las versiones de la función usará después de
analizar el número y el tipo de los parámetros. Si ninguna de las funciones se
adapta a los parámetros indicados, se aplicarán las reglas implícitas de
conversión de tipos.
Sobrecarga de funciones
FIEE- UNMSM 19
Ejemplo02
FIEE- UNMSM 20
Comentarios …
FIEE- UNMSM 22
Como se llamarían
???
FIEE- UNMSM 23
Temario:
• Funciones matemáticas
• Métodos Numéricos
• Introducción al calculo de raíces
• Sistema de ecuaciones algebraicas lineales
• Ajuste de curvas
• Ecuaciones diferenciales ordinarias
• Raíces de ecuaciones
• Método de la bisección
• Criterio de convergencia
Funciones matemáticas – math.h
FIEE- UNMSM 26
Mejorando el código anterior
FIEE- UNMSM 27
acos arco coseno double double
FIEE- UNMSM 29
Introducción al calculo de raíces
• Estos problemas están relacionados con el valor de una variable o de un parámetro que satisface
una ecuación ya sea trascendental o un polinomio (trataremos las raíces de un polinomio).
• Son especialmente valiosos en proyectos de ingeniería donde con frecuencia resulta imposible
despejar analíticamente parámetros de ecuaciones de diseño.
FIEE- UNMSM 30
Sistemas de ecuaciones algebraicas lineales
FIEE- UNMSM 31
Ajuste de curvas
FIEE- UNMSM 32
Ecuaciones diferenciales ordinarias
FIEE- UNMSM 33
Raíces de ecuaciones
• Los métodos cerrados consisten en dar 2 puntos tales que éstos encierren el valor de la raíz,
dichos puntos es cuando al sustituirlos en la función, ésta cambia de signo.
• En éste caso se aplica un análisis de la curva mediante la implementación de un programa
ejer01.cpp en c++, el cual evalúa la función para valores obtenidos a través de un intervalo dado y
un número de puntos en los cuales se divide dicho intervalo.
FIEE- UNMSM 34
Analizando el siguiente polinomio
FIEE- UNMSM 35
ejer01
FIEE- UNMSM 36
El método de bisección
Se sabe que un polinomio de grado “n” tiene “n” raíces las cuales pueden
ser:
• Reales y distintas.
• Reales e iguales.
• Complejas conjugadas.
De acuerdo a ello un polinomio de grado impar tendrá por lo menos una
raíz real, para dichas raíces ocuparemos los métodos numéricos de
Bisección, Regla Falsa, Newton Raphson.
En general, si f(x) es real y continúa en el intervalo que va desde xl hasta
xu y f(xl) y f(xu) tienen signos opuestos, es decir,
FIEE- UNMSM 37
Entonces hay al menos una raíz real entre xl y xu.
FIEE- UNMSM 38
Algoritmo del método de la bisección
• Paso 1:elija los valores iniciales xi y superior xu, que encierren la raíz
de forma tal que la funcion cambie de signo en el intervalo. Esto se
comprueba cuando f(xl)f(xu)<0
• Paso 2:Una aproximación de la raíz Xf se determina mediante:
𝑥𝑖 +𝑥𝑢
•𝑥 𝑓 = 2
• Paso 3: realice las siguientes evaluaciones para determinar en que
intervalo esta la raíz.
• f(xl)f(xu)<0 la raíz se encuentra en el subintervalo inferior
• f(xl)f(xu)>0 la raíz se encuentra en el subintervalo superior
• f(xl)f(xu)<0 la raíz es igual a Xl, termina el calculo
FIEE- UNMSM 39
Escuela de Estudios Generales - UNMSM 40
Criterio de convergencia
• Se debe desarrollar un criterio objetivo para decidir cuándo debe terminar el método.
• Una sugerencia inicial sería finalizar el cálculo cuando el error verdadero se encuentre por debajo
de algún nivel prefijado.
• Puede decidirse que el método termina cuando se alcance un error más bajo, por ejemplo, al
0.1%.
• Se requiere estimar el error de forma tal que no se necesite el conocimiento previo de la raíz, se
puede calcular el error relativo porcentual es de la siguiente manera:
FIEE- UNMSM 41
Donde xr nuevo es la raíz en la iteración actual y xr anterior es el valor de la raíz en la iteración
anterior. Se utiliza el valor absoluto, ya que por lo general importa sólo la magnitud de ea sin
considerar su signo. Cuando ea es menor que un valor previamente fijado es, termina el
cálculo.
A partir del polinomio del cual se obtuvieron los intervalos para los cuales la unción cambia de
signo, se usa el primer intervalo +0.5500 y +1.1000 para probar el programa de ejer02.cpp y
obtener la primer raíz. Para eso se escribe la función en la cabecera #define al igual que en el
programa de ejemplo01.cpp y se corre el programa para un criterio de convergencia de 0.0001
y 20
iteraciones.
FIEE- UNMSM 42
Divide dos polinomios
• El polinomio es :
• 𝐹 𝑥 = 𝑥 3 − 4.23603𝑥 2 − 2.73620𝑥 − 1309037
• Se ejecuta el programa ejer03.cpp. El cual pide tanto los grados como
los coeficientes del divisor y del dividendo y muestra el cociente y el
residuo. Se tiene que especificar si un coeficiente es cero (En
• dado caso).
FIEE- UNMSM 43
Escuela de Estudios Generales - UNMSM 44
FIEE- UNMSM 45
Método de la regla falsa
• Un método alternativo que aprovecha esta visualización gráfica
consiste en unir f(xl) y f(xu) con una línea recta. La intersección de
esta línea con el eje de las x representa una mejor aproximación de la
raíz.
• El hecho de que se reemplace la curva por una línea recta da una
“falsa posición” de la raíz; de aquí el nombre de método de la falsa
posición, o en latín, regula falsi. También se le conoce como método
de interpolación lineal
FIEE- UNMSM 46
Gracias