Доступ к формулам Excel в C # - PullRequest
       1

Доступ к формулам Excel в C #

1 голос
/ 14 августа 2011

Мне нужно использовать формулу NORMSINV в Excel в моем коде C #. У меня нет контактов с таблицей Excel, и я не получаю никаких значений от Excel. Просто нужно использовать формулу в коде C #.

Как этого добиться?

Ответы [ 2 ]

3 голосов
/ 14 августа 2011

Вы можете использовать GSL (Научная библиотека GNU, написанная на C).Я считаю, что функция, которая соответствует той, что вам нужна, будет "gsl_cdf_ugaussian_Pinv".

Вы можете получить GSL здесь:

http://ftp.heanet.ie/mirrors/gnu/gsl

Подробная информация о функции из Excel:

http://support.microsoft.com/kb/826772

И соответствующие подробности из GSL:

http://www.gnu.org/s/gsl/manual/html_node/The-Gaussian-Distribution.html

(Примечание. Стандартное нормальное распределение также называется единичным гауссовым распределением)

0 голосов
/ 14 августа 2011

Я считаю, что это должно вычислить точное приближение того, что вы ищете.

(Примечание: я не программирую на C #, поэтому могут быть некоторые синтаксические ошибки)

public double pdf_norm(double x)
{
  return (1 / Math.Sqrt(Math.PI)) * Math.Exp(-1 * (Math.Pow(x, 2) / 2)); 
}

public double cdf_norm(double x)
{
  double[] bValues = [0.2316419, 0.319381530, −0.356563782, 1.781477937, −1.821255978, 1.330274429];

  double t = 1 / (1 + bValues[0]*x);

  return 1 - pdf_norm(x)*(bValues[1]*t + bValues[2]*Math.Pow(t,2) + bValues[3]*Math.Pow(t,3) + bValues[4]*Math.Pow(t,4) + bValues[5]*Math.Pow(t,5));
}

Затем вы захотите вызвать функцию cdf_norm, чтобы вернуть желаемый номер.

Пожалуйста, протестируйте его и дайте мне знать.:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...