[英]How to divide two complex numbers in C#
我正在尝试将 C# 中的两个复数相除,但无法使其工作,我很确定这是我的公式错误。 但我不明白它有什么问题。
我试图修改公式几次,但没有成功。 这是因为我从未研究过复数(或任何与之类似的数学),因此非常迷茫。 我尝试了这个公式: http://www.mesacc.edu/~scotz47781/mat120/notes/complex/dividing/dividing_complex.html ,但无法将其转换为代码。
我很感激任何回应! 谢谢
public Komplex div(Komplex a, Komplex b)
{
Komplex resDiv = new Komplex();
resDiv.re = a.re / b.re - a.im / a.im;
resDiv.im = a.re / b.im + a.im / b.re;
return resDiv;
}
编辑:程序应该接受这样的输入(示例):(3+2i)/(1-4i)
这就是.NET's Complex
class 的工作方式(针对您的变量和类型名称进行了调整):
public static Komplex div(Komplex a, Komplex b)
{
// Division : Smith's formula.
double a = a.re;
double b = a.im;
double c = b.re;
double d = b.im;
Komplex resDiv = new Komplex();
// Computing c * c + d * d will overflow even in cases where the actual result of the division does not overflow.
if (Math.Abs(d) < Math.Abs(c))
{
double doc = d / c;
resDiv.re = (a + b * doc) / (c + d * doc);
resDiv.im = (b - a * doc) / (c + d * doc);
}
else
{
double cod = c / d;
resDiv.re = (b + a * cod) / (d + c * cod);
resDiv.im = (-a + b * cod) / (d + c * cod);
}
return resDiv;
}
你为什么不使用 .NET 的Complex
类型呢?
var a = new Complex(3, -1);
var b = new Complex(5, -3);
Console.WriteLine(a / b);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.