private void RefreshData(Func <double, double> func, double leftLimit, double rightLimit) { ExponentialHermiteSplain expApproximation = new ExponentialHermiteSplain(func, leftLimit, rightLimit); CubicHermiteSplain cubicApproximation = new CubicHermiteSplain(func, leftLimit, rightLimit); ExpApproximation = expApproximation.Polynomial(); ExpInform = expApproximation.AllData(); CubicApproximation = cubicApproximation.CubicPolynomial(); FunctionTabulation ExpTabulation = new FunctionTabulation(expApproximation.Polynomial(), Step, leftLimit, rightLimit); FunctionTabulation CubicTabulation = new FunctionTabulation(cubicApproximation.CubicPolynomial(), Step, leftLimit, rightLimit); ExpInform = expApproximation.AllData(); CubicInform = cubicApproximation.AllData(); MaxErrorExp = ExpTabulation.FindMaxError(func); MaxErrorCubic = CubicTabulation.FindMaxError(func); MaxErrorExpMessage = "Похибка :" + MaxErrorExp.ToString(); MaxErrorCubicMessage = "Похибка :" + MaxErrorCubic.ToString(); TableItems = RefreshTable(func, ExpTabulation, CubicTabulation); }
public ObservableCollection <TabulationFunctionTableItem> RefreshTable(Func <double, double> func, FunctionTabulation expTabulation, FunctionTabulation cubicTabulation) { ObservableCollection <TabulationFunctionTableItem> items = new ObservableCollection <TabulationFunctionTableItem>(); for (int i = 0; i < expTabulation.Y.Count; i++) { items.Add(new TabulationFunctionTableItem(expTabulation.X[i], func(expTabulation.X[i]), expTabulation.Y[i], cubicTabulation.Y[i], Math.Abs(func(expTabulation.X[i]) - expTabulation.Y[i]), Math.Abs(func(cubicTabulation.X[i]) - cubicTabulation.Y[i]))); } return(items); }