求多项式的根而不把它写成矩阵的形式

  • 本文关键字:多项式 function matlab
  • 更新时间 :
  • 英文 :


是否存在求多项式的根的方法,不是矩阵形式,在MATLAB中?

我知道,求多项式的根(比如p(x) = x^)2 - 4),我应该这样做:

p = [1 0 -4];
r = roots(p)

我想知道是否有某种方法可以找到一个函数的根(比如p(x) = x^)2 - 4)已经存在于多项式形式(不是在矩阵形式)在我的matlab代码?就像任何类似于r = roots(p(x))的东西(当然,这不起作用)。

根是好的

首先,使用roots的解决方案可能会给你最准确和最快的结果,如果你确实在处理多项式。我承认,如果你的函数不是一个多项式,这可能是一个问题。

求函数的根

如果你不想使用根,那就意味着你可能不得不将多项式表示为匿名函数。然后你可以在这个函数上使用任何寻根算法。维基百科列出了其中一些。棘手的是,它们通常不能保证找到一个根,更不用说找到所有根了。所以你可能需要尽可能多的关于你的函数的先验信息。

在matlab中可以使用f0。它的问题是,它只找到一个零,它只会找到零点的函数改变符号(它不会在p(x) = x²工作,例如)。下面是实现它的方法:

p = @(x) x.^2 - 4;  % Define your polynomial as an anonymous function
x0 = 12;  % Initial guess for the zero
% Find a root
fzero(p, x0)
>>> ans = 2
% Now with a different initial guess for a different solution
x0 = -12;
fzero(p, x0)
>>> ans = -2

正如你所看到的,只有当你想找到时,这才有效根,不关心是哪个

问题问题是带有整数或有理系数的多项式有一种通过使用无平方分解找到根的方法。然而,你只能应用它,如果你有一些方法在matlab中存储和访问这些系数。匿名函数不允许这样做。这就是根与矩阵而不是匿名函数一起工作的原因。

最新更新