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); }
//параметры, которые находятся из слау методом гаусса, то бишь коэффициенты линейной комбинации б.ф. 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) {} }