Una forma sencilla y rápida de aprender JAVA, observando y deduciendo cómo se comporta el lenguaje a través de ejemplos prácticos.

sábado, 29 de febrero de 2020

¿Cuánto tiempo dura algo? Coronavirus y la Inecuación de Gott.

Principio de mediocridad viene a decir que "cualquier cosa seleccionada al azar que observemos en un momento determinado no estará ni al comienzo ni al final de su vida, lo más probable es que esté en algún punto alrededor de la mitad de su vida". Partiendo de esta premisa sería posible calcular matemáticamente el tiempo que puede durar algo, y ese algo que vamos a intentar calcular va a ser el tiempo de vida que le queda a la epidemia del Coronavirus (o COVID-19).
Podría considerarse algo profético o mágico pero la "Inecuación de Gott" intenta calcular ese tiempo partiendo de un solo dato: el tiempo transcurrido desde el inicio del evento.



Fórmula:

ta * |(f - 1)/(f + 1)| < tr < ta * |(f + 1)/(f - 1)|

ta = tiempo transcurrido

tr = tiempo restante
f  = fiabilidad que le queremos dar al resultado (%)


Datos recopilados para el cálculo:

1- Primer infectado: 12 de diciembre de 2019
2- Fecha actual: 29 de febrero de 2020
3- Tiempo transcurrido desde la fecha del primer infectado hasta fecha de hoy:
    19 días (diciembre) + 31 días (enero) + 29 días (febrero) = 117 días
4- Se decide aplicar una fiabilidad del 50%


Resultado aplicando la fórmula:

Fin de la epidemia con una fiabilidad del 50%: 


  -> entre 9 de abril del 2020 y el 14 de febrero del 2021

Ahora solo hace falta esperar si el resultado se va ajustar a la realidad, el tiempo dirá...



Empecemos el proyecto desde Netbeans:

Crearemos un JFrame (ventana) al que añadiremos:


 · 4 jTextField con sus respectivas labels
 · 1 jSlider

 · 2 jButton



Código java:


import java.text.DecimalFormat;

public class Main extends javax.swing.JFrame {

    // Definicion variables
    double ta1, tr0, tr1, f;
    DecimalFormat df = new DecimalFormat("#.00");

    // Cálculo medidas rectangulo áureo
    final double Aureo = ((1 + Math.sqrt(5)) / 2);
    int a = 512;
    int b = (int) (a / Aureo);
    final int width = a + b;
    final int height = a;

    public Main() {
        initComponents();
        this.setBounds(0, 0, width, height);
        this.jPanel1.setBounds(0, 0, width, height);
        this.setLocationRelativeTo(null);
    }

    private void initComponents() { ... aqui va el código generado automáticamente por NetBeans al crear la GUI ... }

    private void jButtonCalcularActionPerformed(java.awt.event.ActionEvent evt) {                                      
        calcular();
    }                                              

    private void jSlider1StateChanged(javax.swing.event.ChangeEvent evt) {                                     
        jTextField_Fiabilidad.setText("" + jSlider1.getValue());
        calcular();
    }                                    

    private void jButtonLimpiarActionPerformed(java.awt.event.ActionEvent evt) {

        jTextField_TA1.setText("1");
        jSlider1.setValue(50);
        jTextField_Fiabilidad.setText("50");
        // Intervalo
        jTextField_TR0.setText(df.format(0d));
        jTextField_TR1.setText(df.format(0d));
    }                                             

    private void calcular() {
        ta1 = Double.parseDouble(jTextField_TA1.getText());
        f = Double.parseDouble(jTextField_Fiabilidad.getText()) / 100d;

        // Inecuación de Gott
        tr0 = ta1 * (Math.abs((f - 1) / (f + 1)));
        tr1 = ta1 * (Math.abs((f + 1) / (f - 1)));

        // Mostrar
        jTextField_TR0.setText(df.format(tr0));
        jTextField_TR1.setText(df.format(tr1));
    }

    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(() -> {
            new Main().setVisible(true);
        });
    }

}



Resultado:





Con la tecnología de Blogger.