public MultivariateDistributionSettingsForm(MultivariateDistributionFunctionArgument argument) : this(false, true) { int dimension = argument.MultivariateDistributionSettings.Dimension; numericDimensions.Value = dimension; BuildTables(); var arguments = argument.Arguments; var means = argument.MultivariateDistributionSettings.Means; var covMatrix = argument.MultivariateDistributionSettings.CovarianceMatrix; for (int i = 0; i < dimension; i++) { _arguments.Rows[0][i] = arguments[i]; _means.Rows[0][i] = means[i]; for (int j = 0; j < dimension; j++) { _matrix.Rows[j][i] = covMatrix[i, j]; } } if (argument.MultivariateDistributionSettings is MultivariateNormalDistributionSettings) { comboDistributionType.SelectedIndex = 0; } else if (argument.MultivariateDistributionSettings is MultivariateTDistributionSettings multivariateT) { numericDegreesOfFreedom.Value = (decimal)multivariateT.DegreesOfFreedom; comboDistributionType.SelectedIndex = 1; } }
private void Process() { #if !DEBUG try #endif { _warningsSource.Clear(); string expression = txtFunction.Text; bool evaluateRandomsAlgebra = checkEvaluateRandomsAlgebra.Checked; bool evaluateMonteCarlo = checkEvaluateMonteCarlo.Checked; int samples = (int)numericSamplesCount.Value; int experiments = (int)numericExperimentsCount.Value; int pockets = (int)numericPocketsCount.Value; var univariate = DistributionFunctionArgument.CreateDictionary(_argumentsUnivariate); var multivariate = MultivariateDistributionFunctionArgument.CreateDictionary(_argumentsMultivariate); if (multivariate.Count == 0) { multivariate = null; } Stopwatch sw = Stopwatch.StartNew(); if (evaluateRandomsAlgebra) { sw.Restart(); _distributionsPair.RandomsAlgebra = DistributionManager.RandomsAlgebraDistribution(expression, univariate, multivariate, samples); if (_distributionsPair.RandomsAlgebra is ContinuousDistribution continuous) { //_distributionsPair.RandomsAlgebra = continuous.Discretize(); } sw.Stop(); _distributionsPair.RandomsAlgebraTime = sw.Elapsed; } else { _distributionsPair.RandomsAlgebra = null; _distributionsPair.RandomsAlgebraTime = null; } if (evaluateMonteCarlo) { sw.Restart(); _distributionsPair.MonteCarlo = DistributionManager.MonteCarloDistribution(expression, univariate, multivariate, experiments, pockets); sw.Stop(); _distributionsPair.MonteCarloTime = sw.Elapsed; } else { _distributionsPair.MonteCarlo = null; _distributionsPair.MonteCarloTime = null; } FillResults(); FillCharts(); } #if !DEBUG catch (Exception ex) { MessageBox.Show(ex.Message, Languages.GetText("Exception"), MessageBoxButtons.OK, MessageBoxIcon.Error); } #endif }