public double[] SolveLinearSystemForwardEliminationAndBackSubstitution(double[] RightHandSide) { WriteToDisplay.WriteInfo("\n Solving linear system using link-list storage method and PLU decomposition\n\n"); WriteToDisplay.WriteInfo(" Number of equations = " + n.ToString() + "\n"); StopWatchTimer Totaltime = new StopWatchTimer(); Totaltime.StartTimer(); StopWatchTimer timer = new StopWatchTimer(); //rightHandSide = RightHandSide; //ScaleAllRowsAndRightHandSideAndRemoveZeros(); //this.RemoveAllZeros(); // PLU decomposition timer.StartTimer(); //this.LUDecomposition(); timer.StopTimer(); WriteToDisplay.WriteInfo(" PLU decomposition time = " + timer.TimeElapsedInSeconds().ToString() + "\n"); // Forward elimination timer.StartTimer(); this.ForwardElimination(RightHandSide); timer.StopTimer(); WriteToDisplay.WriteInfo(" Forward elimination time = " + timer.TimeElapsedInSeconds().ToString() + "\n"); //Backward elimination timer.StartTimer(); this.BackSubstitution(); timer.StopTimer(); WriteToDisplay.WriteInfo(" Backward elimination time = " + timer.TimeElapsedInSeconds().ToString() + "\n"); // Determinant timer.StartTimer(); this.CalculateDeterminant(); timer.StopTimer(); WriteToDisplay.WriteInfo(" Determinant time = " + timer.TimeElapsedInSeconds().ToString() + "\n"); Totaltime.StopTimer(); WriteToDisplay.WriteInfo("\n Total time to solve = " + Totaltime.TimeElapsedInSeconds().ToString() + "\n\n"); return(rightHandSide); }