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: