我怎样才能找到这个方法。
你不能,它没有内置到框架中。
我真的需要自己实现吗?
是的。
抱歉,如果这是一个小小的翻转,我不是故意的,但我怀疑你已经知道这将是答案。
也就是说,它没有魔法:
public static class ComplexExtensions {
public static Complex[] NthRoot(this Complex complex, int n) {
Contract.Requires(n > 0);
var phase = complex.Phase;
var magnitude = complex.Magnitude;
var nthRootOfMagnitude = Math.Pow(magnitude, 1.0 / n);
return
Enumerable.Range(0, n)
.Select(k => Complex.FromPolarCoordinates(
nthRootOfMagnitude,
phase / n + k * 2 * Math.PI / n)
)
.ToArray();
}
}
大部分工作都转移到了框架上。我相信他们已经正确地(坏Complex.Phase
,坏,坏)和正确地实施了。Complex.Magnitude
(Complex complex) => Math.Sqrt(complex.Real * complex.Real + complex.Imaginary * complex.Imaginary)
Math.Pow