伴侣矩阵求解多项式的根

这篇具有很好参考价值的文章主要介绍了伴侣矩阵求解多项式的根。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

伴侣矩阵求解多项式的根

已知方程 P ( x ) = ∑ i = 0 n a i x n = 0 P(x) = \sum_{i=0}^{n}a_ix^n = 0 P(x)=i=0naixn=0,通过伴侣矩阵求解该方程的根。

伴侣矩阵

此处参考百度知道,就可以大概知道伴侣矩阵的构建。具体如下,


f ( t ) = t n + a 1 t n − 1 + … + a n − 1 t + a n . f(t)=t^n+a_1 t^{n-1}+\ldots+a_{n-1} t+a_n . f(t)=tn+a1tn1++an1t+an.

是数域 F F F 上的首项为 1 的多项式, 则 n n n 阶矩阵:
C = [ 0 0 … 0 − a n 1 0 … 0 − a n − 1 0 1 … 0 − a n − 2 ⋮ ⋮ ⋮ ⋮ 0 0 … 1 − a 1 ] C=\left[\begin{array}{ccccc} 0 & 0 & \ldots & 0 & -a_n \\ 1 & 0 & \ldots & 0 & -a_{n-1} \\ 0 & 1 & \ldots & 0 & -a_{n-2} \\ \vdots & \vdots & & \vdots & \vdots \\ 0 & 0 & \ldots & 1 & -a_1 \end{array}\right] C= 010000100001anan1an2a1
对于原来的多项式 a 0 a_0 a0系数可能不为1,那就可以通过左右两边同时除以 a 0 a_0 a0得到首项系数为1的多项式。

求解示例

假设我们有一个多项式如下。
P ( x ) = a 0 x 3 + a 1 x 2 + a 2 x + a 3 = 0 P(x)=a_0 x^3+a_1 x^2+a_2 x+a_3=0 P(x)=a0x3+a1x2+a2x+a3=0
b 1 = a 1 a 0 b_1 = \frac{a_1}{a_0} b1=a0a1 b 2 = a 2 a 0 b_2 = \frac{a_2}{a_0} b2=a0a2…依此类推,就得到了如下
P ′ ( x ) = x 3 + b 1 x 2 + b 2 x + b 3 = 0 P'(x)=x^3+b_1 x^2+b_2 x+b_3=0 P(x)=x3+b1x2+b2x+b3=0
此时 P ′ P' P P P P的根是相同。构建伴侣矩阵A:
A = [ 0 0 − b 3 1 0 − b 2 0 1 − b 1 ] A = \left[\begin{array}{lll} 0 & 0 & -b_3 \\ 1 & 0 & -b_2 \\ 0 & 1 & -b_1 \end{array}\right] A= 010001b3b2b1
为了便于观察,可以将A先进行转置,此时的特征根和特征方程是不会发生改变的。

令,

A = [ − b 1 − b 2 − b 3 1 0 0 0 1 0 ] A = \left[\begin{array}{ccc} -b_1 &- b_2 & -b_3 \\ 1 & 0 & 0 \\ 0 & 1 & 0 \end{array}\right] A= b110b201b300

然后就求解该矩阵的特征值和特征向量,由定义得,
A y = λ y A\bold{y} = \lambda \bold{y} Ay=λy
我们可以假设此时多项式 P ( x ) P(x) P(x)的根 x 0 x_0 x0就是矩阵 A阵的特征值,因此有
A y = x 0 y A \mathbf{y}=x_0 \mathbf{y} Ay=x0y
然后,令 y = [ x 0 2 , x 0 , 1 ] T \mathbf{y}=\left[x_0^2, x_0, 1\right]^T y=[x02,x0,1]T,就可以得到,
A y = [ − b 1 x 0 2 − b 2 x 0 − b 3 x 0 2 x 0 ] = [ x 0 3 x 0 2 x 0 ] = x 0 y A\mathbf{y} = \left[\begin{array}{ccc} -b_1x_0^2 -b_2x_0 -b_3 \\ x_0^2 \\ x_0 \end{array}\right] = \left[\begin{array}{c}x_0^3 \\ x_0^2 \\ x_0\end{array}\right] = x_0\mathbf{y} Ay= b1x02b2x0b3x02x0 = x03x02x0 =x0y
此时第一行就得到了我们所需要求解的方程了。

− b 1 x 0 2 − b 2 x 0 − b 3 = x 0 3 -b_1x_0^2 - b_2x_0-b_3 = x_0^3 b1x02b2x0b3=x03

所以只需要解出伴侣矩阵A的所有特征根 x 0 x_0 x0就可以求出原来方程的根了。

参考文档: 传送门

然后让GPT随机给我生成了一个示例的代码,可以验证一下,文章来源地址https://www.toymoban.com/news/detail-831984.html

import numpy as np
import sympy as sp
import matplotlib.pyplot as plt

# 定义三次方程的系数
coefficients = [1, -6, 11, -6]

# 构建友矩阵
A = [[-coefficients[1], -coefficients[2], -coefficients[3]],
     [1, 0, 0],
     [0, 1, 0]]
A = np.array(A)

# 输出友矩阵
print("Companion Matrix A:")
print(A)

# 求解特征值
eigenvalues = np.linalg.eigvals(A)

# 输出结果
print("\nCoefficients of the cubic equation:", coefficients)
print("Eigenvalues of the companion matrix:", eigenvalues)


# 求解方程的准确根
# Define the symbolic variable x
x = sp.symbols('x')

# Define the cubic equation
equation = x**3 - 6*x**2 + 11*x - 6

# Solve the cubic equation
roots = sp.solve(equation, x)

# Display the roots
print("\nExact roots of the cubic equation:", roots)

# Plot the cubic equation
def cubic_equation(x):
    return x**3 - 6*x**2 + 11*x - 6

x_values = np.linspace(0, 4, 400)
y_values = cubic_equation(x_values)

plt.plot(x_values, y_values, label='y = $x^3 - 6x^2 + 11x - 6$')
plt.axhline(0, color='black', linewidth=0.5, linestyle='--', label='y = 0')

plt.scatter(roots, [0, 0, 0], color='black', marker='o', label='Roots')

plt.xlabel('x')
plt.ylabel('y')
plt.title('Plot of the Cubic Equation')
plt.legend()
plt.grid(True)

plt.show()

到了这里,关于伴侣矩阵求解多项式的根的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 机器学习:多项式拟合分析中国温度变化与温室气体排放量的时序数据

    ​ 当分析数据时,如果我们找的不是直线或者超平面,而是一条曲线,那么就可以用多项式回归来分析和预测。 ​ 多项式回归可以写成: Y i = β 0 + β 1 X i + β 2 X i 2 + . . . + β k X i k Y_{i} = beta_{0} +beta_{1}X_{i}+beta_{2}X_{i}^2+...+beta_{k}X_{i}^k Y i ​ = β 0 ​ + β 1 ​ X i ​ + β 2 ​

    2023年04月21日
    浏览(42)
  • 基于MATLAB的矩阵性质:行列式,秩,迹,范数,特征多项式与矩阵多项式

    本节主要讨论矩阵的基本概念和性质,结合MATLAB的基础代码,适合新手。 矩阵的 行列式 的数学定义如下: MATLAB调用的格式如下: 求以下矩阵的行列式: 解: MATLAB代码如下: 运行结果: ans =    5.1337e-13 利用解析解的方法计算20✖️20的Hilbert矩阵的行列式,并分析其代码运

    2024年02月05日
    浏览(63)
  • 如何求矩阵的最小多项式

    首项系数为1,次数最小,且以矩阵 A A A 为根的多项式,称为 A A A 的最小多项式,常用 m ( λ )

    2024年02月13日
    浏览(41)
  • λ-矩阵的多项式展开

    原文链接 定义. 对于 m × n m times n m × n 的 λ lambda λ -矩阵 A ( λ ) = [ a 11 ( λ ) . . . a 1 n ( λ ) ⋮ ⋮ a m 1 ( λ ) . . . a m n ( λ ) ] mathbf{A}(lambda)=begin{bmatrix} a_{11}(lambda) ... a_{1n}(lambda)\\\\ vdots vdots \\\\ a_{m1}(lambda) ... a_{mn}(lambda) end{bmatrix} A ( λ ) = ​ a 11 ​ ( λ ) ⋮ a m 1 ​ ( λ ) ​

    2024年02月19日
    浏览(37)
  • 机器学习_数据升维_多项式回归代码_保险案例数据说明_补充_均匀分布_标准正太分布---人工智能工作笔记0038

    然后我们再来看一下官网注意上面这个旧的,现在2023-05-26 17:26:31..我去看了新的官网, scikit-learn已经添加了很多新功能,     我们说polynomial多项式回归其实是对数据,进行 升维对吧,从更多角度去看待问题,这样 提高模型的准确度. 其实y=w0x0+w1x1.. 这里就是提高了这个x的个数对吧

    2024年02月06日
    浏览(45)
  • 第8章 特征矩阵(矩阵相似、最小多项式、特征矩阵相似、不变因子、初等因子和若当标准型)

    相似有相同的特征多项式,相同的特征值,相同的迹,A的行列式即det(A)也相同,相同的最小多项式,相同的秩。 从而求A的迹(特征值)转化为另一个矩阵的迹(特征值)。 例: (1)AB都正定,则tr(AB) 0,A正定,则有可逆阵P: 由于B正定,所以特征值都大于0,所以AB的迹大于

    2024年02月05日
    浏览(63)
  • geemap学习笔记052:影像多项式增强

    下面介绍的主要内容是应用 Image.polynomial() 对图像进行多项式增强。 多项式增强后的结果 大家如果有问题需要交流或者有项目需要合作,可以加 Q Q :504156006 详聊,加好友请留言“CSDN”,谢谢。

    2024年01月23日
    浏览(39)
  • 自动驾驶规划模块学习笔记-多项式曲线

    自动驾驶运动规划中会用到各种曲线,主要用于生成车辆变道的轨迹,高速场景中使用的是五次多项式曲线,城市场景中使用的是分段多项式曲线(piecewise),相比多项式,piecewise能够生成更为复杂的路径。另外对于自由空间,可以使用A*搜索出的轨迹再加以cilqr加以平滑,也

    2024年02月05日
    浏览(64)
  • 机器人在笛卡尔空间和关节空间的多项式轨迹规划以及matlab代码(三次、五次、七次)

    三次多项式轨迹规划就是s(t)相对于时间t的变化满足三次多项式变化,其表达式如下:                      如前文所述:t的取值范围是[0,T],s(t)的取值范围是[0,1], 又因为初始速度和末速度都为0,所以: S(t)的一阶导数表达式为: 从而可以计算出对应的系数: 将

    2024年01月17日
    浏览(44)
  • AA@有理系数多项式@整系数多项式@本原多项式@有理多项式可约问题

    有理数域上一元多项式的因式分解. 作为 因式分解定理 的一个特殊情形,我们有结论: 每个次数大等于1的 有理系数多项式 都能 唯一地 分解成 不可约的有理系数多项式 的乘积. 有理数域版本中,从一般数域具体到了\\\" 有理系数 \\\" 我们讨论多项式的时候,都假设多项式是在某个数

    2024年02月16日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包