El argumento principal para este cálculo es que si la raza humana fuera a extenderse durante millones de años, la probabilidad de que hayamos nacido en este momento sería muchísimo más pequeña que si no fuera a durar mucho tiempo.
* Formula Principio Antrópico (Juicio Final versión 1):
pa = población antigua (personas que han existido)
pp = población presente (personas vivas actualmente)
pf = población futura (previsión personas vivas en el año "x")
es = esperanza de vida (en años)
EXP = expectativa de extinción
EXP = 1 - [(pa + pp) - 1 / (pa + pp)] ^ {(pf - pp) / es) * [(pp + pf) / 2]}
En modo de diseño generamos la siguiente interfaz gráfica:
Código (JuicioFinal2.java):
package juiciofinal2;
import java.text.DecimalFormat;
import java.util.Calendar;
import java.util.GregorianCalendar;
public class JucioFinal2 extends javax.swing.JFrame {
Calendar fecha = new GregorianCalendar();
double pmuerta;
double pviva;
double ptotal = pmuerta + pviva;
double pmax;
double esp;
double presente;
double futuro;
double expectativa;
public JucioFinal2() {
initComponents();
this.setLocationRelativeTo(null);//centrar
}
// Código generado automáticamente al crear la interface gráfica en modo de diseño
private void initComponents() { ... }
private void jSpinnerAñoFuturoStateChanged(javax.swing.event.ChangeEvent evt) {
actualitzar();
}
private void jButtonCalcularActionPerformed(java.awt.event.ActionEvent evt) {
actualitzar();
}
private void jButtonRestablecerActionPerformed(java.awt.event.ActionEvent evt) {
jTextFieldMuerta.setText("106500");
jTextFieldMaxima.setText("11500");
jTextFieldEsperanza.setText("72");
jTextFieldAñoPresente.setText("" + fecha.get(Calendar.YEAR));
jSpinnerAñoFuturo.setValue(2100);
jTextFieldExpectativa.setText("");
}
private void jButtonCerrarActionPerformed(java.awt.event.ActionEvent evt) {
System.exit(0);
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new JucioFinal2().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JButton jButtonCalcular;
private javax.swing.JButton jButtonCerrar;
private javax.swing.JButton jButtonRestablecer;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel11;
private javax.swing.JLabel jLabel12;
private javax.swing.JLabel jLabel15;
private javax.swing.JLabel jLabel17;
private javax.swing.JLabel jLabel18;
private javax.swing.JLabel jLabel19;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel22;
private javax.swing.JLabel jLabel23;
private javax.swing.JLabel jLabel25;
private javax.swing.JLabel jLabel26;
private javax.swing.JLabel jLabel27;
private javax.swing.JLabel jLabel28;
private javax.swing.JLabel jLabel29;
private javax.swing.JLabel jLabel8;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JSeparator jSeparator1;
private javax.swing.JSeparator jSeparator2;
private javax.swing.JSeparator jSeparator3;
private javax.swing.JSpinner jSpinnerAñoFuturo;
private javax.swing.JTextField jTextFieldAñoPresente;
private javax.swing.JTextField jTextFieldEsperanza;
private javax.swing.JTextField jTextFieldExpectativa;
private javax.swing.JTextField jTextFieldMaxima;
private javax.swing.JTextField jTextFieldMuerta;
// End of variables declaration
private void actualitzar() {
DecimalFormat df = new DecimalFormat("#.##");
pmuerta = Double.parseDouble(jTextFieldMuerta.getText());
pviva = 6500;
ptotal = pmuerta + pviva;
pmax = Double.parseDouble(jTextFieldMaxima.getText());
esp = Double.parseDouble(jTextFieldEsperanza.getText());
presente = Double.parseDouble(jTextFieldAñoPresente.getText());
futuro = Double.parseDouble(jSpinnerAñoFuturo.getValue().toString());
double potencia = ((futuro - presente) / esp) * pmax;
double expectativa = 1 - (Math.pow((ptotal - 1) / ptotal, potencia));
expectativa *= 100;
jTextFieldExpectativa.setText(df.format(expectativa));
}
}
No hay comentarios:
Publicar un comentario