Práctica 1 – Método de Simpson - Programación 2005 – 2006 Vamos a introducir el uso de JCreator con un primer programa cuyo propósito es calcular el valor de una integral mediante el método numérico conocido como de Simpson. No vamos a explicar el origen del método, sólo repasamos brevemente el método resultante: - Partimos de una función f que queremos integrar en un intervalo [a,b] Para integrarlo elegimos un número n par y dividimos el intervalo [a,b] en n subíntervalos de la misma longitud [a=x0,x1], [x1,x2], …, [xi-1,xn=b] Definimos y0 = f(x0), …, yn = f(xn) Entonces se cumple: El primer sumando contiene la suma de los extremos, el segundo la suma de los términos de las posiciones impares y el tercero el de las posiciones pares. Veamos como programar el método en Java mediante JCreator: 1º Al entrar en JCreator por primera vez nos hace algunas preguntas, en las que podemos seleccionar las opciones por defecto. Si estamos en un ordenador en el que ya se entró anteriormente (posiblemente algún compañero de otro grupo de prácticas), esto no sucederá. 2º A menudo JCreator muestra al inicio un mensaje con “Tip of the day”. Leer (o no) el consejo y cerrar la ventana. 3º Si aparece algo de código en el editor éste corresponderá a la práctica de otro compañero que estuvo anteriormente en el mismo puesto. Elegir File+Close Workspace para cerrarla, contestando “Si” a la ventana de confirmación. Es importante hacer esto para no mezclar nuestro código con el del otro compañero. 4º Ahora podemos empezar a trabajar. Creamos un proyecto nuevo proyecto con File+New+Project + Empty Project. Tras pulsar Next ponemos como nombre de proyecto SimpsonIE (si hoy es Jueves) o SimpsonFis (si hoy es Viernes). Es importante el sufijo para no mezclar ni destruir los proyectos de otros compañeros. Pulsamos Finish. 5º Añadimos una nueva clase con File+New+Class. La nueva clase debe tener como nombre Simpson. Podemos además marcar las casillas public y generate main method para ahorrarnos trabajo. Pulsamos Finish. 6º Ahora podemos escribir el código siguiente: public class Simpson { public static void main(String[] args) { final int n = 1000; // número de divisiones // extremos del intervalo final double a = 0; final double b = Math.PI/2; double h=(b-a)/n; // tamaño de cada subintervalo // primer sumando double suma=f(a)+f(b); // segundo sumando: impares for(int i=1; i<n; i+=2) suma+=4*f(a+i*h); // tercer sumando: pares for(int i=2; i<n; i+=2) suma+=2*f(a+i*h); // mostramos el resultado final System.out.println("El resultado es: "+(suma*h/3)); } // función a integrar: sen(x) public static double f(double x){ return Math.sin(x); } } 7º Compilamos (F7), si hay errores corregimos y compilamos de nuevo hasta que en la ventana inferior aparezca Process completed. 8º Ejecutamos el programa (F5). Debe mostrarnos un valor próximo a 1, que es la integral entre 0 y pi/2 de sen(x). Si aún tenemos tiempo (y ganas) podemos realizar las modificaciones siguientes: Añadiendo entrada de datos Si queremos cambiar los intervalos de integración o el número de divisiones del intervalo debemos modificar los datos en el programa y recompilar de nuevo. Sería mejor que el programa pidiera estos datos. Estas son algunas indicaciones de cómo añadir entrada de datos en un programa Java. - Se debe usar una clase del sistema que existe para este fin, la clase Scanner. Para utilizar esta clase hay que: o Importarla. o Declarar un objeto de tipo Scanner o Inicializarlo o Utilizar los métodos nextInt, nextDouble del objeto para leer Un ejemplo: import java.util.Scanner; // para leer de teclado public class Principal { public static void main(String[] args) { // declaramos un objeto de tipo Scanner Scanner sc = new Scanner(System.in); // ahora ya podemos usar el objeto para leer: // leemos un entero int x = sc.nextInt(); // leemos un número real double y = sc.nextDouble(); …………… } Tratar de modificar la clase Simpson para leer de teclado los valores a,b y n. Cuando hayamos acabado si queremos llevarnos el código debemos buscar la carpeta SimpsonIE (si hoy es Jueves) o SimpsonFis (si hoy es Viernes) y copiarla completa. El lugar por defecto donde debe encontrarse es: C:\Archivos de programa\Xinox Software\JCreatorV3LE\MyProjects\ Aunque puede variar (si se quiere verificar mirar la opción Directories dentro de Configure+Options.