Download Práctica 1

Document related concepts
no text concepts found
Transcript
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.