Tengo problemas con esta ecuación: E * cotangent((q * E)/(k * t)) = nkT/q .
Estoy buscando los valores de E para que la igualdad se pueda lograr sabiendo que: q y k son constantes, t y n son variables.
Para eso probé este código pero aparentemente falló:
public class Equation { public static double q = 1.6E-19; public static double k = 1.38E-23; //double y = E * 1/Math.tan(E*q/k*t); //DecimalFormat df = new DecimalFormat("#.#####"); public static double[] nktq = new double[]{0.02857,0.02674,0.03118,0.02829,0.02976,0.02898,0.03001,0.02953,0.032}; public static double[] t = new double[]{80,100,150,200,250,280,300,320,350}; public static double[] n = new double[]{4.14,3.1,2.41,1.64,1.38,1.20,1.16,1.07,1.06}; private static DecimalFormat df2 = new DecimalFormat(".##"); public static double genE(){ double start = 0; double end = 30; double random = new Random().nextDouble(); // DecimalFormat df = new DecimalFormat("#.##"); // df.setRoundingMode(RoundingMode.FLOOR); double E = start + (random * (end - start)); //double E = new Double(df.format(result)); System.out.println(df2.format(E)); return E; } public static void main(String[] args) { //double y = E * 1/Math.tan(E*q/k*t); //DecimalFormat df = new DecimalFormat("#.#####") double E = 0; while ( Math.round(E * 1/Math.tan((q * E)/(k * t[0]))*100000)!= nktq[0]){ genE(); } } }¡Cualquier ayuda es apreciada!
Crea una nueva instancia Random para cada valor. Eso está mal.
Esto es lo que te recomiendo que pruebes:
public class Equation { private Random random; public Equation() { this(null); } public Equation(Long seed) { this.random = (seed == null) ? new Random() : new Random(seed.longValue()); } public double nextConst() { return this.random.nextDouble(); } public double nextConst(double start, double end) { return start + (end-start)*this.random.nextDouble(); } // Add the rest of your stuff here. }