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."); //Всё! }
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"); }
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"); }
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(); }