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 + " ");
}
我正在寻找一个简单的 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 + " ");
}