public Lab3Window()
        {
            BasisFunctions = new string[] { "Pow(x, k)", "Sin(k*x)" };
            func           = (x) => (Math.Exp(Math.Sin(x)));
            basis          = (x, k) => (Math.Pow(x, k));
            //basis = (x, k) => (Math.Sin(x*k));
            lst_x = new List <double>();
            for (int i = 0; i < 60; i++)
            {
                lst_x.Add(0.1 * i);
            }
            k_basis = new List <int>();
            for (int i = 0; i < 10; i++)
            {
                k_basis.Add(i);
            }
            InitializeComponent();
            //combobox.itemssource = basisfunctions;

            slider.Minimum = 0;
            slider.Maximum = k_basis.ToArray()[k_basis.Count - 1];
            slider.Value   = 1;
            model          =
                new ApproximationModel(
                    int.Parse(slider.Value.ToString()),
                    lst_x.ToArray(),
                    basis,
                    func);
        }
Ejemplo n.º 2
0
        //параметры, которые находятся из слау методом гаусса, то бишь коэффициенты линейной комбинации б.ф.

        public ApproximationModel(int k, double[] x, basis_func basis, f func)
        {
            _k         = k;
            _x         = x;
            _basis     = basis;
            _func      = func;
            parametres = new double[_k + 1];
            countMatrix();
            findParameters();//решение слау с помощью метода Гаусса
            //getValues(_x);//получить значения функции, которой мы приблизили func
        }
        private void comboBox_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
        {
            if (comboBox.SelectedValue.ToString() == BasisFunctions[1])
            {
                basis = (x, k) => (Math.Sin(x * k));
            }
            else
            {
                basis = (x, k) => (Math.Pow(x, k));
            }


            chart.Series[ChartSerieName].Points.Clear();

            model = new ApproximationModel(int.Parse(slider.Value.ToString()), lst_x.ToArray(), basis, func);

            try
            {
                chart.Series[ChartSerieName].Points.DataBindXY(lst_x, model.getValues());
                chart.Series["Original"].Points.DataBindXY(lst_x, model.getOriginalValues());
            }
            catch (Exception) {}
        }