2013-08-23 3 views
-5

Я попытался нарисовать функцию y^2 = 4 * a * x, но я столкнулся с проблемой. когда я использую функцию math.sqrt, чтобы найти квадратный корень из значения, которое имеет два ответа + или -что, я получаю только положительное значение. Если я найду sqrt из 4, он вернет +2 вместо + или -2.Возвращаемое значение math.sqrt

Любая помощь будет глубоко оценена.

+5

Потому что это определение функции ... Если вы хотите, отрицательное значение, вы всегда можете инвертировать то, что вам дано, чтобы получить его ... – Servy

+0

Как вы ожидаете возвращения функции ± 2? Вы используете квантовый компьютер? – Kevin

ответ

0

Если вы читаете the doc (MSDN действительно полной и хорошо сделал, использовать его, прежде чем задавать вопросы), вы увидите, что с параметром 0 или положительным, Math.Sqrt возвращает только «положительный квадратный корень из д.»

Если вам нужно отрицательное значение, вы должны сделать это самостоятельно, например так:

double value = 4; 
double positiveSqrt = Math.Sqrt(value); 
double negativeSqrt = positiveSqrt * -1; 
2

вы можете написать свой собственный метод, чтобы вернуть оба значения:

public static IEnumerable<double> Sqrt(double d) 
{ 
    var result = Math.Sqrt(d); 
    yield return result; 
    yield return -result; 
} 
1

Вы также можете умножить ответ на -1 и получить оба.

0

Если вы действительно хотите функцию, которая возвращает как положительные, так и отрицательные квадратные корни, вы можете написать свой собственный довольно легко:

public static double[] Sqrts(double d) { 
    var v = Math.Sqrt(d); 
    return v == 0 ? new[] { v } : new[] { v, -v }; 
} 
+0

Что делать, если вы берете квадратный корень из нуля? –

+0

@ EricLippert Хорошая точка. В этом случае он может * полезно вернуть '-0.0', но я подозреваю, что OP не заинтересован в таких причудах. –