[chronojump] Fixed LeastSquares formula
- From: Xavier Padullés <xpadulles src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [chronojump] Fixed LeastSquares formula
- Date: Mon, 19 Sep 2016 14:06:43 +0000 (UTC)
commit 60f49135ad46531c013acb42dd2cc4f217829562
Author: Xavier Padullés <x padulles gmail com>
Date: Mon Sep 19 14:21:47 2016 +0200
Fixed LeastSquares formula
src/utilMath.cs | 12 +++++++-----
1 files changed, 7 insertions(+), 5 deletions(-)
---
diff --git a/src/utilMath.cs b/src/utilMath.cs
index 8bf4bb9..839afb2 100644
--- a/src/utilMath.cs
+++ b/src/utilMath.cs
@@ -75,21 +75,23 @@ public class LeastSquares
double sumX = 0; //sumatory of the X values
double sumX2 = 0; //sumatory of the squared X values
double sumX3 = 0; //sumatory of the cubic X values
+ double sumX4 = 0; //sumatory of the forth power of X values
for(int i = 0; i < numMeasures; i++){
sumX = sumX + measures[i].X;
sumX2 = sumX2 + measures[i].X * measures[i].X;
sumX3 = sumX3 + measures[i].X * measures[i].X * measures[i].X;
+ sumX4 = sumX3 + measures[i].X * measures[i].X * measures[i].X * measures[i].X;
}
- double detA = numMeasures*sumX2*sumX3 + 2*sumX*sumX2*sumX3 - sumX2*sumX2*sumX2 -
sumX2*sumX2*sumX3 - numMeasures*sumX3*sumX3;
+ double detA = numMeasures*sumX2*sumX4 + 2*sumX*sumX2*sumX3- sumX2*sumX2*sumX2 -
sumX*sumX*sumX4 - numMeasures*sumX3*sumX3;
if(detA != 0){
double [,] invA = new double[3,3];
- invA[0,0] = ( sumX2*sumX3 - sumX3*sumX3) / detA;
- invA[0,1] = (-sumX*sumX3 + sumX2*sumX3) / detA;
+ invA[0,0] = ( sumX2*sumX4 - sumX3*sumX3) / detA;
+ invA[0,1] = (-sumX*sumX4 + sumX2*sumX3) / detA;
invA[0,2] = ( sumX*sumX3 - sumX2*sumX2) / detA;
- invA[1,1] = ( numMeasures*sumX3 - sumX2*sumX2) / detA;
+ invA[1,1] = ( numMeasures*sumX4 - sumX2*sumX2) / detA;
invA[1,2] = (-numMeasures*sumX3 + sumX*sumX2 ) / detA;
invA[2,2] = ( numMeasures*sumX2 - sumX*sumX ) / detA;
@@ -107,7 +109,7 @@ public class LeastSquares
Success = true;
Coef = coef;
} else {
- LogB.Error("Invalid values");
+ LogB.Error("Determinant of matrix equal to zero");
Success = false;
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]