コード例 #1
2
        ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



        //PUBLIC METHOD DEFINITIONS

        public static void TestModule()
        {
            //textbook example, in order from least power to highest power of x
            //1.25 -3.875 2.125 2.75 -3.5 1
            double[] testArray = { 1.25, -3.875, 2.125, 2.75, -3.5, 1 };

            IterationResult result;
            Bairstow b = new Bairstow(testArray, 0.001, 30, 0,0);
            do
            {
                result = b.performIteration();
                Console.WriteLine("R: " + result.iterR + " S: " + result.iterS + " R-ERR: " + result.iterRError + " S-ERR: " + result.iterSError + " DELTA-R: " +
                    result.deltaR + " DELTA-S: " + result.deltaS);
                if (result.rootFound) Console.WriteLine();
            } while (result.allRootsFound == false);

            Tuple<double, double>[] roots = b.calculateRoots();
            for(int i = 0; i < roots.Length; ++i)
            {
                Console.WriteLine("REAL: " + roots[i].Item1 + " COMPLEX: " + roots[i].Item2);
            }
        }
コード例 #2
1
ファイル: Program.cs プロジェクト: JSamp701/bairstow-runner
        static void Main(string[] args)
        {
            Console.Write("Please enter an output file-name for data (note: .csv will be automatically appended): ");
            string outfileName = Console.ReadLine() + ".csv";
            Console.Write("How many problems to solve? ");
            using (StreamWriter writer = new StreamWriter(outfileName)){
                for(int numtosolve = Convert.ToInt32(Console.ReadLine()); numtosolve > 0; --numtosolve)
                {
                    Console.Write("Please enter name for problem: ");
                    string name = Console.ReadLine();
                    Console.Write("Please enter error percentage (example, enter 0.001 for 0.1% allowed error): ");
                    double error = getDouble();
                    Console.Write("Please enter maximum iterations: ");
                    int iterations = Convert.ToInt32(Console.ReadLine());
                    Console.Write("Please enter initial s guess: ");
                    double sGuess = getDouble();
                    Console.Write("Please enter initial r guess: ");
                    double rGuess = getDouble();

                    Console.Write("Please enter the highest power of x.  For example, if the highest power of x in the polynomial is x^5, then please enter 5. ");
                    int numSlots = Convert.ToInt32(Console.ReadLine()) + 1;

                    Console.WriteLine("We will now begin entering the values of the coefficients of the polynomial.  To do so, please enter the coefficients for the prompted power of x (where x0 is x^0, x1 is x_1, x2 is x^2, etc).");
                    double[] polynomial = new double[numSlots];
                    for (int i = 0; i < numSlots; ++i)
                    {
                        Console.Write("x^" + i + ": ");
                        polynomial[i] = getDouble();
                    }

                    Console.Write("The polynomial you entered is f(x) = ");
                    Console.Write(polynomial[0]);
                    for (int i = 1; i < numSlots; ++i)
                    {
                        Console.Write(" + " + polynomial[i] + "x^" + i);
                    }
                    Console.Write("\n");

                    Bairstow b = new Bairstow(polynomial, error, iterations, sGuess, rGuess);
                    Tuple<double, double>[] roots = b.calculateRoots();
                    List<List<Bairstow.IterationResult>> iterationData = b.getIterationResults();

                    writer.WriteLine("Problem Name: " + name);
                    writer.WriteLine();
                    writer.WriteLine();
                    writer.WriteLine("ROOTS");
                    writer.WriteLine("REAL Component, COMPLEX Component");
                    for(int i = 0; i < roots.Length; ++i)
                    {
                        writer.WriteLine(roots[i].Item1 + "," + roots[i].Item2);
                    }
                    if (iterationData[0].Count > 0)
                    {
                        writer.WriteLine();
                        writer.WriteLine();
                        writer.WriteLine("ITERATION RESULTS");
                        writer.WriteLine("S,R,DELTA-S,DELTA-R,ERROR-S,ERROR-R");
                        writer.WriteLine();
                        for (int i = 0; i < iterationData.Count(); ++i)
                        {
                            List<Bairstow.IterationResult> currentSet = iterationData[i];
                            if (currentSet.Count == 0) continue;
                            writer.WriteLine("ITERATION SET #" + i);
                            for (int j = 0; j < currentSet.Count; ++j)
                            {
                                Bairstow.IterationResult current = currentSet[j];
                                writer.WriteLine(current.iterS + "," + current.iterR + "," + current.deltaS + "," + current.deltaR + "," + current.iterSError + "," + current.iterRError);
                            }
                            writer.WriteLine();
                        }
                    }
                    writer.WriteLine("\n\n");
                }
            }

            int bob = 2;
        }