声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 9963|回复: 6

[综合讨论] Matlab中的roots函数的算法原理

[复制链接]
发表于 2008-11-19 19:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
最近写论文,需要求解一个高次代数方程,本来很简单的使用matlab中的roots函数就可以了。由于写论文要注明算法的参考文献,我查看了Matlab的roots函数的帮助,发现它是把代数方程转化为矩阵特征根求解来做的。

现在的问题是,在大部分数值分析的书中,讲的都是二分法、不动点法、牛顿法,并没有谈到roots函数中使用的这种方法。我查了文献,有两篇中文论文《D_Q方法求实系数高次代数方程的全部根》和《代数方程求根的一个新的数值解法》都是采用了这种方法。不过,作者没有给出相关的参考文献。请问,roots函数中使用的方法到底是来自哪里,或者哪本英文教材中提到过,如果有高人知道,请不吝赐教,谢谢!
回复
分享到:

使用道具 举报

发表于 2008-12-8 16:09 | 显示全部楼层
我一直在注意此帖的动态, 因我亦有兴趣知道! 苦等许久, 楼主解决否?
刚google搜了下, 了解不是很透彻, 说说心得, 恳请指教
Matlab的roots函数, 是将多项式表示成伴随矩阵(Companion), 再用解特徵值方法求根
伴随矩阵A, 其特徵多项式为det(A-sI); 其多项式的根即为矩阵A的特徵值
其他数值方法依次仅求出一个根, 使用矩阵特徵值eig一次全解出

评分

1

查看全部评分

 楼主| 发表于 2008-12-8 19:42 | 显示全部楼层

回复 沙发 ChaChing 的帖子

呵呵,难得有同道中人啊!在这个问题上,我找到的最早文献是
A composite polynomial zerofinding matrix algorithm
作者是 F. Malek, R. Vaillancourt
发表在 Computers & Mathematics with Applications
Volume 30, Issue 2, July 1995, Pages 37-47
发表于 2008-12-8 21:19 | 显示全部楼层

回复 板凳 xray 的帖子

我也挖了几篇文献, 只不过个人搅工程久了, 数学水平又不高, 没怎麽细看! 仅瞄瞄了解个大概! 还希望楼主研究完教教!
 楼主| 发表于 2008-12-9 09:58 | 显示全部楼层

将代数方程求根转化为特征值求解的证明

proof.JPG

评分

1

查看全部评分

发表于 2008-12-9 11:51 | 显示全部楼层
谢谢楼主提供的资料, 学习了
个人看法, 若把n次方程视为n次ODE, 将ODE转换成状态方程(state space)的过程, 除Companion矩阵外, 尚有许多种型态的可能性, 其中各型态的特徵矩阵A的特徵值, 都是n次方程的根
利用此种方式除了降为一阶外, 在数值分析上有其方便性, 只不过各类数值分析稳定性的问题, 有时会造成一些round-off误差
 楼主| 发表于 2008-12-9 14:34 | 显示全部楼层

回复 6楼 ChaChing 的帖子

这种方法把高次代数方程求根转换为矩阵求特征值,从而把代数方程求根与一般意义上的任意方程求根区别开来,从思路上来说,体现了代数方程的特殊性。此外,矩阵求特征值是数值分析中的经典问题,已经有很多成熟的方法,最常用的就是QR分解方法。

正如楼上提到的,把代数方程系数转换成矩阵有许多方法,在《A composite polynomial zerofinding matrix algorithm》一文中就给出了Frobenius' Companion Matrix (这个也是Matlab中roots所使用的),Schmeisser's Companion Matrix 和 Fiedler's Companion Matrix 三种矩阵,至于其中哪一种矩阵在求解特征值的过程中具有较高的稳定性,就不是一般工程人员能够探讨的问题了。
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-12-4 12:30 , Processed in 0.073472 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表