2F1 является частью интеграл определенного уравнения, приводящий к следующей реализации:
Код: Выделить всё
internal static double HCWR(double distance, double n)
{
double geometricResult = 2F1(1, 1 / n, 1 + 1 / n, -Math.Pow(distance, -n));
return (Math.Pow(distance, -n) * geometricResult);
}
Значения, подобные for пример a = 1, b = 0,5, c = 1,5 и z = -25,0, которые должны быть 0,27468, обрабатываются не во всех реализациях, которые я смог найти. CenterSpace отклоняет все |z| > 1 и MathNet.Numerics возвращает -infinity, хотя я также предпочел бы реализацию, которая может обрабатывать нецелые значения для z.
Пояснение: Этот вопрос ищет за рекомендации по внедрению математики. Речь идет о реализации общей, хорошо известной математической функции на C#, а не о библиотеках, не об учебных пособиях, не об инструментах, не о книгах и не о других сторонних ресурсах. Речь идет о любом решении для реализации известной математической функции, которая может обрабатывать определенные типы значений.
Подробнее здесь: https://stackoverflow.com/questions/789 ... in-c-sharp