C#函数从根计算多项式系数

C# function to calculate polynomial coefficients from roots

我正在寻找一个简单的 method/function 来计算 C# 中给定多项式根的多项式系数。例如,给定根:roots = [-3+j, -3-j, -5, -1] 计算形式为 x^4 + ax^3 + bx^2 + cx + d = 0 的多项式,结果为 coefficients = [a, b, c, d]。在 Python 中, numpy.poly(roots) 可以简单地用于此。我一直在寻找等效的 C# 函数,但没有找到任何东西。有人知道这样的事情吗?

以下方法提取具有指定根的多项式的系数:

// vieta's formulas to calculate polynomial coefficients from roots
public static Complex[] FromRoots(Complex[] roots)
{
    int n = roots.Length;
    Complex[] coeffs = new Complex[n + 1];
    coeffs[n] = 1.0;

    for (int i = 0; i < n; i++)
    {
        for (int j = n - i - 1; j < n; j++)
        {
            coeffs[j] = coeffs[j] - roots[i] * coeffs[j + 1];
        }
    }

    Array.Reverse(coeffs);
    return coeffs;
}

您可以通过以下方式使用它:

Complex[] roots =
{
    new Complex(-3, 1),
    new Complex(-3, -1),
    -5,
    -1
};

Complex[] poly = FromRoots(roots);

// code below prints: (1, 0) (12, 0) (51, 0) (90, 0) (50, 0)
foreach (Complex p in poly)
{
    Console.Write(p + " ");
}