internal void RunNonlinearEquationsTest(MainWindow window) { FileTabItem tab = null; window.Dispatcher.Invoke(() => { tab = window.FileTab.SelectedItem as FileTabItem; }); if (tab == null) { return; } List <ErrorMessage> errorList = new List <ErrorMessage>(); window.Dispatcher.Invoke(() => { window.FileTab.Focus(); window.StatusText = "Расчёт"; }); //Thread.Sleep(4000); //Test of UI List <string> outputList = new List <string>(); try { string text = ""; window.Dispatcher.Invoke(() => { text = tab.Document.Text; }); Equations.Nonlinear.Compiler compiler = new Equations.Nonlinear.Compiler(); Equations.Nonlinear.NonlinearEquationDescription compiledEquation = compiler.CompileEquations(text); MathUtils.NonlinearSystemSymbolicAnalytic system = new MathUtils.NonlinearSystemSymbolicAnalytic(compiledEquation); //calc solution MathNet.Numerics.LinearAlgebra.Vector <double> solution = MathUtils.NewtonRaphsonSolver.Solve( system, MathNet.Numerics.LinearAlgebra.Vector <double> .Build.DenseOfArray(compiledEquation.InitialValues), 20, 0.01, 1.0 ); outputList.Add("Упрощённое представление"); outputList.Add(compiledEquation.PrintEquations()); outputList.Add("Решение"); FormOutput(solution, compiledEquation, ref outputList); } catch (Equations.CompilerException exc) { outputList.Add(exc.Message); var errors = exc.Errors; foreach (var error in errors) { errorList.Add(error); } } catch (Exception exc) { window.Dispatcher.Invoke(() => { window.OutputText += exc.Message; window.OutputText += "\n"; window.OutputText += exc.StackTrace; }); return; } try { window.Dispatcher.Invoke(() => { foreach (ErrorMessage error in errorList) { window.errors.Add(error); } foreach (var output in outputList) { window.OutputText += output; window.OutputText += "\n"; } window.StatusText = "Готово"; } ); } catch (Exception exc) { Console.Write(exc.Message); } return; }
internal void RunNonlinearExpressionTest(MainWindow window) { FileTabItem tab = null; window.Dispatcher.Invoke(() => { tab = window.FileTab.SelectedItem as FileTabItem; }); if (tab == null) { return; } List <ErrorMessage> errorList = new List <ErrorMessage>(); window.Dispatcher.Invoke(() => { window.FileTab.Focus(); window.StatusText = "Расчёт"; }); //Thread.Sleep(4000); //Test of UI List <string> outputList = new List <string>(); try { string text = ""; window.Dispatcher.Invoke(() => { text = tab.Document.Text; }); Equations.Nonlinear.Compiler compiler = new Equations.Nonlinear.Compiler(); Equations.Nonlinear.NonlinearEquationDescription compiledEquation = compiler.CompileEquations(text); outputList.Add("Variables:"); outputList.Add(compiledEquation.PrintVariables()); outputList.Add(compiledEquation.PrintEquations()); outputList.Add(compiledEquation.PrintJacobiMatrix(false)); } catch (Equations.CompilerException exc) { outputList.Add(exc.Message); var errors = exc.Errors; foreach (var error in errors) { errorList.Add(error); } } catch (Exception exc) { window.Dispatcher.Invoke(() => { window.OutputText += exc.Message; window.OutputText += "\n"; window.OutputText += exc.StackTrace; }); return; } try { window.Dispatcher.Invoke(() => { foreach (ErrorMessage error in errorList) { window.errors.Add(error); } foreach (var output in outputList) { window.OutputText += output; window.OutputText += "\n"; } window.StatusText = "Готово"; } ); } catch (Exception exc) { Console.Write(exc.Message); } return; }