【问题标题】:How to get the coefficients of the polynomial in python如何在python中获得多项式的系数
【发布时间】:2021-09-14 07:31:04
【问题描述】:

我需要创建一个函数get_polynom,它将获取一个表示点的元组列表(x1, y1), (x2, y2), ..., (xn, yn),并找到多项式c0, c1, ..., cn的系数。

我无法理解任务,我唯一的提示是函数的提供部分:

import numpy as np


def get_polynom(coords):
    ...
    return np.linalg.solve(a, b)

有人做过类似的事情吗?稍微解释一下究竟是什么预期会很棒!

提前致谢!

【问题讨论】:

    标签: python numpy polynomials coefficients


    【解决方案1】:

    多项式是一个函数f(x) = cn x^n + ... + c1 x + c0。使用这对元组,您将得到 n+1 个形式为f(xi) = yi 的方程,因为 i 从 1 变为 n+1。如果将xiyi 代入第一个方程,您将得到一个线性系统,其中包含n 个方程,未知数cnc0。把它写成矩阵形式,你会得到A*C = B

    np.linalg.solvea 参数表示 A 矩阵,在这种情况下,多项式系数的“权重” - 即 x 的幂(例如,一行将是 [xi^n, xi^(n-1), ..., xi, 1])。 b 参数将是 yi 的向量。

    请注意,如果您的多项式为 n 次,则需要 n+1 个元组来求解其系数。

    【讨论】:

    • 所以,基本上,如果我有三对(x, y),我将有三个方程,每个方程看起来像y = 1 * c0 + x * c1 + x^2 * c2 + x^3 * c3
    • 是的,完全正确。请注意,您需要多个等于系数数量的方程才能求解线性系统。所以如果你得到 3 个元组,那么等式就是y = 1 * c0 + x * c1 + x^2 * c2。我正在更新我的答案以反映这一点
    • 哦,好的,知道了。非常感谢!
    • 举个例子,如果你有一个一阶多项式y = a * x + b,点(1, 2)(2, 3),你得到两个方程a + b = 22a + b = 3
    猜你喜欢
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 2018-07-08
    • 2020-07-21
    • 1970-01-01
    • 1970-01-01
    • 2013-10-18
    • 1970-01-01
    相关资源
    最近更新 更多