samedi 29 avril 2017

How to get Random numbers to test math equation?

I have trouble with this equation : E * cotangent((q * E)/(k * t)) = nkT/q

I'm looking for the values of E for the equality can be acheived knowing that : q , k are constant and t , n are variables For that I tried this code but apparently is failed

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();
    }
    } 
    }

help please !




Aucun commentaire:

Enregistrer un commentaire