Metodos Numericos
Short Description
Descripción: Biseccion, secante, newton raphson y mas, en lenguaje c++ y visual basic...
Description
Facultad de Ingenieria Civil y Arquitectura Escuela Profesional de Ingenieria Civil
SOLUCION DE ECUACIONES Y PROGRAMACIÓN …
19 DE MAYO DE 2017 1
INFORME N° 001 – 2017 – UNA / EPIC / EPP
A: Lic. Docente de curso de Métodos Numéricos
De: -
Edgar Portugal Pari
Estudiante del curso en mención.
Asunto: Presentación del trabajo de “SOLUCIÓN DE ECUACIONES Y PROGRAMACIÓN”
Fecha: 19 de Mayo de 2017
El preente trabajo tiene como objetivo principal la resolución de ecuaciones lineales con los métodos: Bisección, Punto Fijo, Nexton Raphson, Falsa Posicion y Secante, todo esto usando los programas Visual Basic en Excel, Dev C++ y Python. Se presentan los algoritmos que darán a conocer la raíz de la función mostrada en la primera parte.
Atte: Edgar Portugal Pari Código: 151366
INTRODUCCIÓN Uno de los problemas más corrientes en matemáticas consiste en resolver una ecuación, es decir, encontrar un valor x* E R que satisfaga f(x) = 0 Donde f es una función de variable y valor real, o sea, f:lR---+lR. Este x* se llama solución de la ecuación. A veces también se dice que x* es una raíz. En algunos casos no se tiene una expresión sencilla de f, sino que f (x) corresponde al resultado de un proceso; por ejemplo: 𝑥
2
∫ 𝑒 −𝑡 𝑑𝑡 − 0.2 = 0 −∝
Lo mínimo que se le exige a f es que sea continua. Si no es continua en todo lR, por lo menos debe ser continua en un intervalo [a, b] donde se busca la raíz. Algunos métodos requieren que f sea derivable. Para la aplicación de algunos teoremas de convergencia, no para el método en sí, se requieren derivadas de orden superior. Los métodos generales de solución de ecuaciones sirven únicamente para hallar raíces reales. Algunos métodos específicos para polinomios permiten obtener raíces complejas. Los métodos presuponen que la ecuación f(x) = O tiene solución. Es necesario, antes de aplicar mecánicamente los métodos, estudiar la función, averiguar si tiene raíces, ubicarlas aproximadamente. En algunos casos muy difíciles no es posible hacer un análisis previo de la función, entonces hay que utilizar de manera mecánica uno o varios métodos, pero sabiendo que podrían ser ineficientes o, simplemente, no funcionar. La mayoría de los métodos parten de Xo, aproximación inicial de x*, a partir del cual se obtiene X1 A partir de X1 se obtiene X2 después X3, y así sucesivamente se construye la sucesión [Xk] con el objetivo, no siempre cumplido, de que lim 𝑋𝑘 = 𝑋 ∗
𝑘→∞
El proceso anterior es teóricamente infinito, y obtendría la solución después de haber hecho un número infinito de cálculos. En la práctica el proceso se detiene cuando se obtenga una aproximación suficientemente buena de x*. Esto querría decir que el proceso se detendría cuando |𝑋𝑘 − 𝑋 ∗ | ≤ 𝜀 Para un E dado. El anterior criterio supone el conocimiento de x*, que es justamente lo buscado. Entonces se utiliza el criterio, éste si aplicable, |𝑓(𝑋𝑘 )| ≤ 𝜀 En la mayoría de los casos, cuanto más cerca esté Xo de x*, más rápidamente se obtendrá una buena aproximación de x*.
Otros métodos parten de un intervalo inicial [ao, bo], en el cual se sabe que existe una raíz x*. A partir de él, se construye otro intervalo [a1, b1] contenido en el anterior, en el que también está x* y que es de menor tamaño. De manera análoga se construye [a2, b2].
METODO DE NEWTON RAPHSON Tal vez, de las fórmulas para localizar raíces, la fórmula de Newton-Raphson (figura 6.5) sea la más ampliamente utilizada. Si el valor inicial para la raíz es xi, entonces se puede trazar una tangente desde el punto [xi, f(xi)] de la curva. Por lo común, el punto donde esta tangente cruza al eje x representa una aproximación mejorada de la raíz. El método de Newton-Raphson se deduce a partir de esta interpretación geométrica
De la gráfica la primera derivada en x es equivalente a la pendiente:
El algoritmo capaz de dar solución a la ecuación: (𝑥 − 0.5)2 − 0.1 = 0
ALGORITMO #include #include // setprecision #include #include #define PRECISION 10 #define MAX_ITERACIONES 10 #define INTERVALOS 6 using namespace std; void tabula(double a, double b, int intervalos); // Muestra un # tabulado de intervalos double f(double x); // Retorna el valor de la función evaluada en x double f_derivada(double x); // Retorna la derivada de la función evaluada en x void newton_raphson(double x0, double tolerancia, int max_interaciones); // Función que calcula la raiz aproximada de una función int main() { double a; double b; double tolerancia; // Tolerancia double x0; // Primera aproximación cout tolerancia; // Newton Raphson newton_raphson(x0, tolerancia, MAX_ITERACIONES); cin.get(); cin.get(); return 0; }
void tabula(double a, double b, int intervalos) { int puntos = intervalos + 1; double ancho = (b - a) / intervalos; cout
View more...
Comments