Introducción a la Computación Numérica

Slides:



Advertisements
Presentaciones similares
Suponiendo que además en la clase U hay: import java.util.*; class U{ static Scanner teclado = new Scanner(System.in); static public int readInt(String.
Advertisements

Oscar Bedoya. Edificio 331, 2º piso, E.I.S.C. Estructuras de datos y algoritmos.
© Mark E. Damon - All Rights Reserved Subject 1 Subject 2 Subject 3 Subject 4 Subject 5 Subject 6 $100 $200 $300 $400 $500 Round 2 Final Jeopardy Scores.
Entrada y Salida ES.leerChar (); ES.leerEntero (); ES.leerEnteroLargo (); ES.leerFloat (); ES.leerDouble (); System.out.print System.out.println.
Listas. Utilización de un TAD Lista. Interfaz del TAD LISTA public interface Lista { void crearNodo (); /*Crea un nuevo nodo en el TadLista*/ int devolverClave.
Ing. Esp. Ricardo Cujar. Permite la ejecución de una sentencia, dada una determinada condición. If(condición){ sentencia(s) a ejecutar en caso de que.
Estructuras de control selectivas Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión Práctica 3.
Implementación de Iterables Construcción de Iterables virtuales o basados en otros iterables Fundamentos de Programación Departamento de Lenguajes y Sistemas.
Tipos genéricos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 3.
Un polinomio es una expresión algebraica de la forma: P(x) = a n x n + a n - 1 x n a n - 2 x n a 1 x 1 + a 0 Siendo a n, a n a 1,
Factorial: con instrucción while function y=factorial(x) i=2 y=1 while i> factorial(3) i = 2 y = 1 y = 2 i = 3 y = 6 i = 4 ans = 6.
Input-Process-Output Entrada Datos Números con decimales (doublé) Números sin decimales(integer) Palabras de texto (string) Procesamiento Calcular Realizar.
Tema 2 : Java Básico Clase Práctica 4a(Conferencia 3)
Tipos de funciones Marcela mayen#14 4b.
10/27/2017 Integración Numérica.
Polinomios y Fracciones algebraicas
Unidad 4 Anexo 3. Capítulo VIII
Clase 8: Strings Valeria Herskovic –
Matemáticas 2º Bachillerato C.T.
Apuntes de Matemáticas 3º ESO
Repaso/resumen lectura/escritura y asignación funciones
26-abril(J.Alvarez).
Clase 3: Funciones Valeria Herskovic –
Clase 9: Repaso/Resumen
Operadores aritméticos Funciones trigonométricas
Estructuras de Datos Recursividad.
Procesos largos.
Temas grado once, año Funciones
Clase 8: Repaso/Resumen
“Escritura” formateada a un string
Ecuación de Segundo Grado
Clase 7: Abreviaturas Valeria Herskovic –
Instrucciones if/else y while
INTEGRALES U.D. 8 * 2º Angel Prieto Benito
Fundamentos del lenguaje de programación Condicionales, ciclos, Métodos, enumeraciones Escuela Técnica Superior Kinal Instructor Edwin Tumax.
Teclado y Pantalla (Java estándar)
MÉTODOS NUMERICOS PARA SOLUCION DE ECUACIONES Parte2
Tele clase 12 Integración numérica, métodos de Gauss y de Romberg.
Universidad de las Ciencias Informáticas
Ing. Pedro Arias Quintero
UNIVERSIDAD ALONSO DE OJEDA FACULTAD DE CIENCIAS ADMINISTRATIVAS
Solución numérica de ecuaciones
Universidad de las Ciencias Informáticas
26-abril(J.Alvarez).
INTEGRALES DEFINIDAS.
clase3: instrucción if-else
Clase 7: Repaso/Resumen
Método de la bisección Se trata de encontrar los ceros de f(x) = 0
Tema 7 LÍMITES Y CONTINUIDAD Bloque Análisis Matemático.
SEGUNDO TEOREMA FUNDAMENTAL DEL CÁLCULO INTEGRAL
Área entre curvas.
FUNCION CUADRATICA Y ECUACION DE 2ª ASOCIADA II
Matemáticas 2º Bachillerato C.S.
POLINOMIOS p(x) = p0 + p1x + p2x2 + p3x3 + … + pnxn pn ≠ 0
Descomposición Factorial Unidad 5
IPOO 2 cuatrimestre 2018 Departamento de Ciencias e Ingeniería
 Función cuadrática Definición Es de la forma: f(x) = ax2 + bx + c
INECUACIONES U. D. 6 * 4º ESO E. Angel Prieto Benito
2/22/2019 RAICES MÉTODO DE BISECCIÓN.

Recursividad 1 Análisis de algoritmos. Matrushka La Matrushka es una artesanía tradicional rusa. Es una muñeca de madera que contiene otra muñeca más.
JAVA: elementos básicos
INTEGRALES U.D. 8 * 2º Angel Prieto Benito
Clase 10 (Repaso/Resumen)
13-marzo-2008.
Instrucciones if/else y while
clase4: instrucción if-else
Problema Un programa debe leer 2 números desde un objeto Console. El primero es el monto que un cliente debe pagar por una compra y el segundo la cantidad.
ALGUNOS EJERCICIOS.
Transcripción de la presentación:

Introducción a la Computación Numérica Propósito: calcular eficientemente soluciones de problemas que requieren mucho cálculo, por ejemplo: Evaluar polinomios Evalurar series Calcular reaíces de funciones contiunuas Calcular aérea bajo una curva (integral definida)

Problema: Evaluar un polinomio class Polinomio{ protected double[] a; //arreglo de coeficientes protected int n; //grado public Polinomio(double[]x){ //constructor para // incluir coeficientes n=x.length-1; a=new double[n+1]; for(int i=0; i<=n; ++i) a[i]=x[i]; } public Polinomio(int x){ //constructor para def. el grado a=new double[(n=x)+1]; for(int i=0; i<=n; ++i) a[i]=0; public void coeficiente(double x,int i){ a[i]=x; } public double evaluar(double x){?}

Soluciones Solución 1.  ai xi double s=0; for(int i=0; i<=n; ++i) s += a[i] * Math.pow(x,i);//1*,1+,ops exp(i*log(x)) return s; Solución 2. s += a[i] * potencia(x,i);//1*,1+, * de potencia static public double potencia(double x,int i){ //i * return i==0 ? 1 : x * potencia(x,i-1); } static public double potencia(double x,int i){//aprox log2i * if( i==0 ) return 1; double aux = potencia(x,i/2); return i%2 == 0 ? aux*aux : x*aux*aux;

Soluciones Solución 3. double s=0, potencia=1; for(int i=0; i<=n; ++i) { s += a[i] * potencia; // 1+ y 1* potencia *= x; // 1* } return s; Solución 4. Factorización de Horner: (...((an*x + a n-1 )x + a n-2 )x * . . . + a 1 )x + a 0 double s=0; for(int i=n; >=0; --i) s = s * x + a[i]; // 1* y 1+

Problema: Evaluar una serie Evaluar ex mediante la serie 1 + x + x2/2! + x3/3! + . . . Encabezamiento: static public double exp(double x)   Solución 1. int n=10; //Nº de términos de la sumatoria double s=0; for(int i=0; i<n; ++i) s+=potencia(x,i)/factorial(i); //1+,1/,*potencia,*fact return s; static public long factorial(int x){ return x==0? 1 : x*factorial(x-1); } Solución 2. int n=10; //Nº de términos double s=1, potencia=1, factorial=1; for(int i=1; i<n; ++i) s += (potencia*=x)/(factorial*=i); //1+,1/,2*

Evaluar una serie: más soluciones Solución 3. int n=10; //Nº de términos double s=1, termino=1; for(int i=1; i<n; ++i) s += (termino *= x/i); //1+,1/,1* return s;   Solución 4. double epsilon = 0.001; //resultado con 3 decimales for(int i=1; true; ++i){ double sAnt = s; //suma anterior s += termino *= x/i; //1+,1/,1* if( s - sAnt <= epsilon ) break; //1- }

Evaluar una serie Solución 5. double epsilon = 0.001; //resultado con 3 decimales double s=1, termino=1; for(int i=1; termino>epsilon; ++i) s += termino *= x/i; //1+,1/,1* return s; Propuestos. Calcular las siguientes funciones mediante las series indicadas: ·         Arcotangente: x - x3/3 + x5/5 - . . . ·         Seno: x - x3/3! + x5/5! - . . . ·         Coseno: 1 - x2/2! + x4/4! - . . . ·         Logaritmo natural: 2( Z + Z3/3 + Z5/5 + . . .) con Z =(x-1)/(x+1)

Búsqueda de raices Problema. Calcular la raíz de una función continua en [a,b].    Solución 1. Método de búsqueda binaria Algoritmo: ·        - Determinar x como punto medio del intervalo ·       - Si f(x) tiene el mismo signo de f(a) entonces repetir el proceso en intervalo [x,b] ·         - Si f(x) tiene el mismo signo de f(b) entonces repetir el proceso en intervalo [a,x] Nota. Las iteraciones se detienen cuando el tamaño del intervalo de búsqueda se reduzca hasta alcanzar un epsilon. a b

static public double raiz(double a,double b,double epsilon) { f(b) a x=(a+b)/2 f(a) b static public double raiz(double a,double b,double epsilon) { double x; while(true){ double x = (a + b) / 2; if( b - a <= epsilon) break;; if( signo(f(x)) == signo(f(a))) a=x; else b=x; } return x; static public int signo(double x){ if( x < 0 ) return -1; if( x > 0 ) return 1; return 0;  

Recursivo y genérico (para cualquier función continua). Alternativa 2. Recursivo y genérico (para cualquier función continua).   static public double raiz(double a, double b, double epsilon, Funcion f) { double x = (a+b)/2; if( b - a <= epsilon) return x; if( signo(f.valor(x)) == signo(f.valor(a))) return raiz(x,b,epsilon,f); else return raiz(a,x,epsilon,f); } Con interface Funcion{ public double valor(double x);

Ejemplo de uso: class F implements Funcion{   class F implements Funcion{ public double valor(double x){ return ...;//expresión con x } class Coseno implements Funcion{ return Math.cos(x); class Raiz{ static public void main(String[] args){ System.out.println(raiz(0, 3, 0.00001, new F())); Function cos = new Coseno(); System.out.println(raiz(0, Math.PI, 1.0E-5, cos);