public static void Main()
double M1 = Amplitude(A,B,radian(angle + 0 ));
double M2 = Amplitude(A,B,radian(angle + 120));
double M3 = Amplitude(A,B,radian(angle + 240));
Console.WriteLine("out of balance weight = " + A.ToString() + ", test weight = " + B.ToString() +", angle = " + angle.ToString() +"\n" );
Console.WriteLine("measurment one: " + Math.Round(M1,3).ToString() + "\n");
Console.WriteLine("measurment two: " + Math.Round(M2,3).ToString() + "\n");
Console.WriteLine("measurment three: " + Math.Round(M3,3).ToString() + "\n");
double error = double.MaxValue;
for (angle = 0; angle < 360; angle +=1)
for (B = 0; B < 2; B += 0.01)
for (A = 0; A < 2; A += 0.01)
double M1dash = Amplitude(A,B,radian(angle + 0 ));
double M2dash = Amplitude(A,B,radian(angle + 120));
double M3dash = Amplitude(A,B,radian(angle + 240));
double RMSofErrors = Math.Sqrt( ((M1-M1dash)*(M1-M1dash) + (M2-M2dash)*(M2-M2dash) + (M3-M3dash)*(M3-M3dash))/3.0 );
Console.WriteLine("A = " + AnswerA.ToString() + ", B = " + AnswerB.ToString() +", angle = " + AnswerAngle.ToString() );
public static double radian(double degrees)
degrees = degrees % 360.0;
double result = degrees/180.0*Math.PI;
public static double Amplitude(double A, double B, double angle )
return Math.Sqrt(A*A + B*B +2.0*A*B*Math.Cos(angle) );