Пример #1
0
        public static void Solve()
        {
            //создаем классическую задачу Коши
            CauchyProblem myProblem = new CauchyProblem(conditions, tLast, numOfEquations, f, Lambda);

            //создаем поставщиков разных методов
            IMethodProvider provider1 = new FileMethodProvider(fileName1);
            IMethodProvider provider2 = new FileMethodProvider(fileName2);

            //создаем методы
            Method method1 = new Method(provider1);
            Method method2 = new Method(provider2);

            //получаем результаты решения нашего уравнения для трёх разных допустимых погрешностей
            Results results11 = myProblem.Solve(method1, requiredNumberOfPoints, epsilon1, parameter);
            Results results12 = myProblem.Solve(method1, requiredNumberOfPoints, epsilon2, parameter);
            Results results13 = myProblem.Solve(method1, requiredNumberOfPoints, epsilon3, parameter);

            Results results21 = myProblem.Solve(method2, requiredNumberOfPoints, epsilon1, parameter);
            Results results22 = myProblem.Solve(method2, requiredNumberOfPoints, epsilon2, parameter);
            Results results23 = myProblem.Solve(method2, requiredNumberOfPoints, epsilon3, parameter);

            //создаем места вывода наших результатов
            ResultsRenderer laTeXRenderer1        = new LaTeXRenderer("tableEps1.tex");
            ResultsRenderer laTeXRenderer2        = new LaTeXRenderer("tableEps2.tex");
            ResultsRenderer laTeXRenderer3        = new LaTeXRenderer("tableEps3.tex");
            ResultsRenderer laTeXRendererRelation = new LaTeXRenderer("tableRelation.tex");

            ResultsRenderer consoleRenderer = new ConsoleRenderer();

            //выводим резултаты
            laTeXRenderer1.RenderResults(results11, "Таблица 1");
            laTeXRenderer2.RenderResults(results12, "Таблица 2");
            laTeXRenderer3.RenderResults(results13, "Таблица 3");
            laTeXRendererRelation.RenderResultsRelation(results11, results12, results13, "Таблица 4");

            Console.WriteLine();
            Console.WriteLine("By Felberg method.");

            consoleRenderer.RenderResults(results11, "Таблица 1");
            consoleRenderer.RenderResults(results12, "Таблица 2");
            consoleRenderer.RenderResults(results13, "Таблица 3");
            consoleRenderer.RenderResultsRelation(results11, results12, results13, "Таблица 4");

            Console.WriteLine();
            Console.WriteLine("By Dorman - Prince method.");

            consoleRenderer.RenderResults(results21, "Таблица 1");
            consoleRenderer.RenderResults(results22, "Таблица 2");
            consoleRenderer.RenderResults(results23, "Таблица 3");
            consoleRenderer.RenderResultsRelation(results21, results22, results23, "Таблица 4");
        }
        public static void Solve()
        {
            //Создаем экземпляр задачи Лагранжа
            LagrangeProblem lagrangeProblem = new LagrangeProblem(BuildConditions, ExtractComponents,
                                                                  tLast, initialParameter, analyticalSolutionForInitialParameter, numOfEquations, f, Lambda);

            //создаем поставщик данных метода
            IMethodProvider provider = new FileMethodProvider(fileName);

            //создаем метод из данных, полученных от поставщика
            Method method = new Method(provider);

            //найдем начальные условия в задаче Лагранжа, и составим из них задачу Коши
            CauchyProblemWithFixedParameter cauchyProblem =
                lagrangeProblem.ConvertToCauchyProblem(epsilon3, parameter, method);

            //решаем полученную задачу с разной степенью точности
            Results results1 = cauchyProblem.Solve(method, requiredNumOfPoints, epsilon1);
            Results results2 = cauchyProblem.Solve(method, requiredNumOfPoints, epsilon2);
            Results results3 = cauchyProblem.Solve(method, requiredNumOfPoints, epsilon3);

            //создаем визуализатор результатов в консоль
            ResultsRenderer renderer     = new ConsoleRenderer();
            ResultsRenderer rendererTex1 = new LaTeXRenderer("table1.tex");
            ResultsRenderer rendererTex2 = new LaTeXRenderer("table2.tex");
            ResultsRenderer rendererTex3 = new LaTeXRenderer("table3.tex");
            ResultsRenderer rendererTex4 = new LaTeXRenderer("table4.tex");

            //выводим результаты в консоль
            renderer.RenderResults(results1, "Таблица 1.");
            renderer.RenderResults(results2, "Таблица 2.");
            renderer.RenderResults(results3, "Таблица 3.");

            //выводим результаты в tex-файлы
            rendererTex1.RenderResults(results1, "Таблица 1.");
            rendererTex2.RenderResults(results2, "Таблица 2.");
            rendererTex3.RenderResults(results3, "Таблица 3.");

            //выводим соотношения результатов
            renderer.RenderResultsRelation(results1, results2, results3, "Таблица 4.");
            rendererTex4.RenderResultsRelation(results1, results2, results3, "Таблица 4.");

            //выводим найденные начальные условия
            Console.WriteLine();
            Console.WriteLine("Начальные условия для параметра alpha = {0}:", parameter);
            Console.WriteLine(cauchyProblem.conditions.y0);

            //Всё!
        }
Пример #3
0
        public static void Solve()
        {
            //создаем задачу с неизвестной конечной точкой
            UnknownPointProblem problem =                                                                                             //
                                          new UnknownPointProblem(conditions, numOfEquations, f, Lambda, AdjustStep, IsPointReached); //

            //создаем поставщик данных метода
            IMethodProvider provider = new FileMethodProvider(fileName);

            //создаем метод из данных, полученных от поставщика
            Method method = new Method(provider);

            //Преобразуем нашу задачу к классической задаче Коши при помощи полученного метода
            CauchyProblem clProblem = problem.ConvertToCauchyProblem(method, epsilon3, parameter);

            //CauchyProblem clProblem = new CauchyProblem(conditions, 40.0, 4, f, Lambda);
            //решаем полученные задачи с разной степенью точности
            Results results1 = clProblem.Solve(method, requiredNumberOfPoints, epsilon1, parameter);
            Results results2 = clProblem.Solve(method, requiredNumberOfPoints, epsilon2, parameter);
            Results results3 = clProblem.Solve(method, requiredNumberOfPoints, epsilon3, parameter);

            //создаем визуализатор результатов в консоль
            ResultsRenderer renderer = new ConsoleRenderer();

            //создаем визуализатор результатов в tex-файл
            ResultsRenderer latex1 = new LaTeXRenderer("tbl1.tex");
            ResultsRenderer latex2 = new LaTeXRenderer("tbl2.tex");
            ResultsRenderer latex3 = new LaTeXRenderer("tbl3.tex");
            ResultsRenderer latex4 = new LaTeXRenderer("tbl4.tex");

            //выводим результаты в консоль
            renderer.RenderResults(results1, "Таблица 1.");
            renderer.RenderResults(results2, "Таблица 2.");
            renderer.RenderResults(results3, "Таблица 3.");

            //выводим результаты в tex-файл
            latex1.RenderResults(results1, "Таблица 1.");
            latex2.RenderResults(results2, "Таблица 2.");
            latex3.RenderResults(results3, "Таблица 3.");

            //выводим соотношения результатов
            renderer.RenderResultsRelation(results1, results2, results3, "Таблица 4.");
            latex4.RenderResultsRelation(results1, results2, results3, "Таблица 4.");

            //Всё!
        }
Пример #4
0
        public static void Solve()
        {
            //Создаем экземпляр задачи
            UnknownCondProblem problem =
                new UnknownCondProblem(BuildConditions, ExtractComponents, tLast,
                                       previousStartingPoint, nextStartingPoint, numOfEquations, f, Lambda);

            //создаем поставщик данных метода
            IMethodProvider provider = new FileMethodProvider(fileName);

            //создаем метод из данных, полученных от поставщика
            Method method = new Method(provider);

            //найдем начальные условия в задаче, и составим из них задачу Коши
            CauchyProblemWithFixedParameter cauchyProblem =
                problem.ConvertToCauchyProblem(epsilon3, parameter, method);

            //решаем полученную задачу с разной степенью точности
            Results results1 = cauchyProblem.Solve(method, requiredNumOfPoints, epsilon1, parameter);
            Results results2 = cauchyProblem.Solve(method, requiredNumOfPoints, epsilon2, parameter);
            Results results3 = cauchyProblem.Solve(method, requiredNumOfPoints, epsilon3, parameter);

            //создаем визуализатор результатов в консоль
            ResultsRenderer renderer     = new ConsoleRenderer();
            ResultsRenderer rendererTex1 = new LaTeXRenderer("table1.tex");
            ResultsRenderer rendererTex2 = new LaTeXRenderer("table2.tex");
            ResultsRenderer rendererTex3 = new LaTeXRenderer("table3.tex");
            ResultsRenderer rendererTex4 = new LaTeXRenderer("table4.tex");

            //выводим результаты в консоль
            renderer.RenderResults(results1, "Таблица 1.");
            renderer.RenderResults(results2, "Таблица 2.");
            renderer.RenderResults(results3, "Таблица 3.");

            rendererTex1.RenderResults(results1, "Таблица 1.");
            rendererTex2.RenderResults(results2, "Таблица 2.");
            rendererTex3.RenderResults(results3, "Таблица 3.");

            //выводим соотношения результатов
            renderer.RenderResultsRelation(results1, results2, results3, "Таблица 4.");
            rendererTex4.RenderResultsRelation(results1, results2, results3, "Таблица 4.");

            //Всё!
        }
Пример #5
0
        public static void Solve()
        {
            //выводим данные для построения графика в файл
            GetDataForGraphics(dataFileName, stepForGraphicsData, epsilon3);

            //создаем классическую задачу Коши
            CauchyProblem myProblem = new CauchyProblem(conditions, tLast, numOfEquations, f, Lambda);

            //создаем поставщик метода
            IMethodProvider provider = new FileMethodProvider(fileName);

            //создаем метод
            Method method = new Method(provider);

            //получаем результаты решения нашего уравнения для трёх разных допустимых погрешностей
            Results results1 = myProblem.Solve(method, requiredNumOfPoints, epsilon1, parameter);
            Results results2 = myProblem.Solve(method, requiredNumOfPoints, epsilon2, parameter);
            Results results3 = myProblem.Solve(method, requiredNumOfPoints, epsilon3, parameter);

            //создаем места вывода наших результатов
            ResultsRenderer laTeXRenderer1        = new LaTeXRenderer("tableEps1.tex");
            ResultsRenderer laTeXRenderer2        = new LaTeXRenderer("tableEps2.tex");
            ResultsRenderer laTeXRenderer3        = new LaTeXRenderer("tableEps3.tex");
            ResultsRenderer laTeXRendererRelation = new LaTeXRenderer("tableRelation.tex");

            ResultsRenderer consoleRenderer = new ConsoleRenderer();

            //выводим резултаты
            laTeXRenderer1.RenderResults(results1, "Таблица 1");
            laTeXRenderer2.RenderResults(results2, "Таблица 2");
            laTeXRenderer3.RenderResults(results3, "Таблица 3");
            laTeXRendererRelation.RenderResultsRelation(results1, results2, results3, "Таблица 4");

            Console.WriteLine();
            Console.WriteLine("By Felberg method.");

            consoleRenderer.RenderResults(results1, "Таблица 1");
            consoleRenderer.RenderResults(results2, "Таблица 2");
            consoleRenderer.RenderResults(results3, "Таблица 3");
            consoleRenderer.RenderResultsRelation(results1, results2, results3, "Таблица 4");
        }
Пример #6
0
        static void GetDataForGraphics(string outputFileName, double step, double epsilon)
        {
            sbyte        numOfPoints = 1;
            StreamWriter outputFile  = new StreamWriter(outputFileName);

            //создаем классическую задачу Коши
            CauchyProblem myProblem = new CauchyProblem(conditions, tLast, numOfEquations, f, Lambda);

            //создаем поставщик метода
            IMethodProvider provider = new FileMethodProvider(fileName);

            //создаем метод
            Method method = new Method(provider);

            Result result;

            for (double parameter = step; parameter < 1; parameter += step)
            {
                result = myProblem.Solve(method, numOfPoints, epsilon, parameter)[0];
                outputFile.WriteLine(parameter.ToString("G",
                                                        CultureInfo.InvariantCulture) + "\t" + result.y[1].ToString("G", CultureInfo.InvariantCulture));
            }
            outputFile.Close();
        }