Bonjour

Voici mon problème. Je dois convertir un code PHP vers Java. Une partie de ce code contient un calcul de régression linéaire. D'ores et déjà, j'avertis que je suis pas matheux
Voici la méthode qui permet de faire ce calcul :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 
public void calculate(Spectrum spectrum){
		int n = spectrum.countPoints();
		int n2 = n*n;
		double sommeX = sumX(spectrum);
		double sommeX2 = sumX2(spectrum);
		double sommeY = sumY(spectrum);
		double sommeY2 = sumY2(spectrum);
		double sommeXY = sumXY(spectrum);
		double covXY=(n*sommeXY-sommeX*sommeY)/n2;
		double varX=(n*sommeX2-sommeX*sommeX)/n2;
		double varY=(n*sommeY2-sommeY*sommeY)/n2;
 
		double tmp=n*sommeX2-sommeX*sommeX;
 
		b0=(sommeX2*sommeY-sommeX*sommeXY)/tmp;
		b1=(n*sommeXY-sommeX*sommeY)/tmp;
		double Q1 = (sommeY2+n*b0*b0+b1*b1*sommeX2+2*(b0*b1*sommeX-b0*sommeY-b1*sommeXY));
		double Q2 = (n-2);
		double Q3 = Q1/Q2;
		sr=Math.sqrt(Q3);
		s0=(sr*Math.sqrt(sommeX2/tmp));
		s1=(sr*Math.sqrt(n/tmp));
		r=(covXY/Math.sqrt(varX*varY));
	}
Mon problème est le suivant, j'ai des valeurs qui sont NaN. Par exemple, pour le calcul de la variable r, le Math.sqrt d'un nombre négatif sera NaN. Donc, évidemment, cela perturbe tout.
Je précise que je suis sous JDK 1.4.2.
Y aurait-il un mathématicien pour vérifier si le calcul est correct ? J'ai tiré ce code brut de décoffrage de PHP. Sans doute les opérations ne sont pas correctes ?

Merci d'avance.

@++