どうすればこの方法を見つけることができますか。
フレームワークに組み込まれていないため、できません。
本当に自分で実装する必要がありますか?
はい。
これが少し逆に出くわしたら申し訳ありませんが、そうするつもりはありませんが、これが答えになることをすでに知っていたと思います.
とはいえ、魔法はありません。
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