Пример #1
0
        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();
            }
        }
Пример #2
0
        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;
        }
Пример #3
0
        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();
        }
Пример #4
0
        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);
        }