如何在C#中划分两个复数

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)

This is how .NET's Complex class does it(针对您的变量和类型名称进行了调整):

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);