private void LoadTableFromXML() { OpenFileDialog openDlg = new OpenFileDialog(); openDlg.Filter = "XML | *.xml"; if (openDlg.ShowDialog() == true) { try { Lp = LagrangePolynom.ReadFromXML(openDlg.FileName); } catch (InvalidOperationException) { MessageBox.Show("Invalid XML file!", "Error", MessageBoxButton.OK, MessageBoxImage.Error); return; } Gx = new ExprTree.Expression(Lp.ToString(), "x"); this.FileName = openDlg.FileName; //show the values in the point grid pointsDt.Clear(); foreach (Point p in Lp.GetPointCollection()) { DataRow newRow = pointsDt.NewRow(); newRow["X"] = p.X; newRow["Y"] = p.Y; pointsDt.Rows.Add(newRow); } pointGrid.DataContext = pointsDt; pointGrid.UpdateLayout(); } }
private void ButtonSaveTableToXML_Click(object sender, RoutedEventArgs e) { List <Point> interpolationPoints = new List <Point>(); DataTableReader dr = new DataTableReader(pointsDt); while (dr.Read()) { interpolationPoints.Add(new Point((double)dr["X"], (double)dr["Y"])); } Lp = new LagrangePolynom(interpolationPoints.ToArray()); Lp.SaveToXML(this.FileName); btnSaveChangesToXML.IsEnabled = false; pointGrid.IsReadOnly = true; }
static void Main(string[] args) { double[] arrX = { -5, -3, -1, 1, 3 }; Func <double, double> FuncToPolynom = x => Math.Sin(x) + Pow(2 * x, 1.0 / 3.0); LagrangePolynom poly1 = new LagrangePolynom(arrX, FuncToPolynom); poly1.CalculateLagrange(); Console.WriteLine("Result polynom is:"); Console.WriteLine(poly1); Console.WriteLine(); QuadraticPolynom poly2 = new QuadraticPolynom(arrX, FuncToPolynom); Console.WriteLine("Result polynoms are:"); for (int i = 0; i < poly2.Length; i++) { Console.WriteLine("\t{0}", poly2[i]); } Console.WriteLine(); for (double i = arrX[0]; i <= arrX[arrX.Length - 1]; i += (arrX[1] - arrX[0]) / 5) { Console.WriteLine("Error of Lagrange polynom in {0}: {1}", Math.Round(i, 1), Math.Abs(Math.Round((RoflanLagrangeCalculate(Math.Round(i, 1)) - FuncToPolynom(Math.Round(i, 1))), 6))); } Console.WriteLine(); for (double i = arrX[0]; i <= arrX[arrX.Length - 1]; i += (arrX[1] - arrX[0]) / 5) { if (i < arrX[1]) { Console.WriteLine("Error of Spline polynom in {0}: {1}", Math.Round(i, 1), Math.Abs(Math.Round((RoflanSplineCalculate(Math.Round(i, 1), 1) - FuncToPolynom(Math.Round(i, 1))), 6))); } else if (i < arrX[2]) { Console.WriteLine("Error of Spline polynom in {0}: {1}", Math.Round(i, 1), Math.Abs(Math.Round((RoflanSplineCalculate(Math.Round(i, 1), 2) - FuncToPolynom(Math.Round(i, 1))), 6))); } else if (i < arrX[3]) { Console.WriteLine("Error of Spline polynom in {0}: {1}", Math.Round(i, 1), Math.Abs(Math.Round((RoflanSplineCalculate(Math.Round(i, 1), 3) - FuncToPolynom(Math.Round(i, 1))), 6))); } else { Console.WriteLine("Error of Spline polynom in {0}: {1}", Math.Round(i, 1), Math.Abs(Math.Round((RoflanSplineCalculate(Math.Round(i, 1), 4) - FuncToPolynom(Math.Round(i, 1))), 6))); } } Console.ReadKey(); }
static void Main(string[] args) { Console.WriteLine("x^2-4:\n"); Expression x2 = new Expression("x^2", "x"); Expression four = new Expression("4"); PrintRoots(x2 - four); //x^2-x-2 => x1=-1; x2=2 Console.WriteLine("x^2-x-2:\n"); Expression x = new Expression("x", "x"); Expression two = new Expression("2"); PrintRoots(x2 - x - two); //Using L'argrange's polynom Console.WriteLine("x^2:\n"); Expression lagrange = new Expression(LagrangePolynom.ReadFromXML("testPol_1.xml").ToString(), "x"); PrintRoots(lagrange); //x^2 => root: 0 Console.WriteLine("Sin:\n"); Expression sin = new Expression(LagrangePolynom.ReadFromXML("sin.xml").ToString(), "x"); PrintRoots(sin); Console.WriteLine("Chebyshev tan:\n"); Expression ch_Tan = new Expression(LagrangePolynom.ReadFromXML("chebyshevTan.xml").ToString(), "x"); PrintRoots(ch_Tan); Console.WriteLine("Tan:\n"); Expression tan = new Expression(LagrangePolynom.ReadFromXML("tan.xml").ToString(), "x"); PrintRoots(tan); Console.WriteLine("x^8:\n"); Expression x8 = new Expression(LagrangePolynom.ReadFromXML("x8.xml").ToString(), "x"); PrintRoots(x8); }