当前位置: 首页 > 面试题库 >

如何从多项式的根有效地找到它的系数?

叶修永
2023-03-14
问题内容

给定n多项式的根,该多项式的前导系数为1。如何 有效地 找出该多项式的系数?

从数学上讲,我知道如果第一个系数为1,则k一次取乘积根的总和k+1-th就是多项式的系数。

我的代码基于这种方法。

换句话说,如何从一次获取的列表中最佳地找到数字乘积之和k

int main()
{

    int n, sum;
    cin >> n;
    int a[n];
    for (int i=0; i<n; i++) cin >> a[i];
    //for the second coefficient
    sum=0;
    for (int i=0; i<n; i++)
    {
        sum+=a[i];
    }
    cout << sum << endl;
    //for the third coefficient
    sum=0;
    for (int i=0; i<n; i++)
    {
        for (int j=i+1; j<n; j++)
        {
            sum+=a[i]*a[j];
        }
    }
    cout << sum << endl;
}

我曾经考虑过要为是否需要更高的系数而将数字记入产品中,但没有为它写代码,因为如果多项式的次数很大,这实际上是没有用的。


问题答案:

您需要计算线性因子的乘积

(x-z1)·(x-z2)···(x-zn)

可以通过将多项式与线性因子重复相乘来归纳实现

(a [0] + a [1]·x +…+ a [m-1]·x ^(m-1))·(x-zm)

=(-a [0]·zm)+(a [0] -a [1]·zm)·x +…+(a [m-2] -a [m-1]·zm)·x ^( m-1)+ a
[m-1]·x ^ m

可以将其实现为循环

a[m] = a[m-1]
for k = m-1 downto 1
    a[k] = a[k-1] - a[k]*zm
end
a[0] = -a[0]*zm

对于所有n个线性因子的乘积,总共得出n²/ 2乘法和相减的次数。



 类似资料:
  • 问题内容: 我需要找到勒让德多项式的(近似值)解。我尝试了几个Java库,但没有一个我想要的(最接近的是commons-math,它甚至具有用于在Laguerre Solver中找到解决方案的代码,但没有公开该方法)。是否有现有的解决方案,或者我需要实施自己的解决方案? 问题答案: 您可以使用有效的Java矩阵库 请找到以下相同的示例示例

  • 问题内容: 我知道可以通过使用:获得多项式特征作为数字。根据手册,在以下两个方面,这些功能是:。但是,如何获得高阶功能的描述?不显示任何功能列表。 问题答案: 顺便说一下,现在有更合适的功能: PolynomialFeatures.get_feature_names。 输出结果如下: 注意由于某种原因,您必须先适合PolynomialFeatures对象,然后才能使用get_feature_nam

  • 问题内容: 假设我在NumPy中有一个包含连续微分函数求值的数组,我想找到局部最小值。没有噪音,因此每个点的值都低于其所有邻居的值都满足我的局部最小值标准。 我有以下列表推导,适用于二维数组,忽略了边界上的潜在最小值: 但是,这很慢。我也想使它适用于任意数量的尺寸。例如,是否有一种简单的方法来获取任何维度数组中的点的所有邻居?还是我完全以错误的方式来解决这个问题?我应该改用吗? 问题答案: 可以使

  • 问题内容: 我有大量的键值对。现在我要从中删除选定的键。以下代码显示了我为实现该目标所做的工作。 然后 : 可以了 我只想知道,哪种方法可以更好地满足我的要求? 问题答案: 假设你的一套包含您要删除的字符串,你可以使用的方法和。 返回此映射中包含的键的Set视图。该集合由地图支持,因此对地图的更改会反映在集合中,反之亦然。 人为的例子:

  • 我有一些带有json的URL,需要读取数据。在本例中,json如下所示: 我想将获取的数据作为组件的属性返回。最好的方法是什么?我试着用axios做到这一点。我设法获取数据,但在render()方法中设置state之后,我收到了一个空对象。以下是代码: 我不知道为什么在render()方法中数据消失了。如果我把 在。然后部分,我获得状态为200的数据。 所以我现在问是否有其他方法可以做到这一点。我

  • 问题内容: 我正在编写一个脚本,其中将业务量以纬度和经度加载到mySQL数据库中。然后,我向该脚本提供一个(最终用户的)经度纬度,并且该脚本必须计算从提供的经度/经度到它从数据库中获得的条目的EACH的距离,并按从最远到最远的顺序对其进行排序。 实际上,我实际上只需要大约10或20个“最近”的结果,但是除了从数据库中获取所有结果并对每个结果运行函数然后进行数组排序之外,我什么也想不做。 这是我已经