有沒有什么方法可以在 MATLAB中找到多項式的根,而不是矩陣形式?
我知道,要找到多項式的根(例如,p(x) = x^.2 - 4),我應該執行以下操作:
p = [1 0 -4];
r = roots(p)
我想知道是否有某種方法可以在我的 matlab 代碼中找到已經以多項式形式(而不是矩陣形式)存在的函式的根(比如 p(x) = x^.2 - 4)?像任何類似的東西r = roots(p(x))(這不起作用,ofc。)謝謝!
uj5u.com熱心網友回復:
根很好
首先,roots如果您確實在使用多項式,那么使用的解決方案可能會給您最準確和最快的結果。我承認,如果您的函式不是多項式,這可能是個問題。
尋找函式的根
如果您不想使用根,這意味著您可能必須將多項式表示為匿名函式。然后,您可以在該函式上使用任何尋根演算法。維基百科列出了其中的一些。棘手的是,一般來說,他們不保證會在 root 上找到,更不用說所有這些了。因此,您可能需要盡可能多的有關您的功能的先驗資訊。
在 matlab 中,您可以使用fzero。默認情況下,它只找到一個零,并且它只會在函式更改符號的地方找到零(p(x) = x2例如,它不起作用)。這是你將如何實作它:
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 中存盤和獲取這些系數時,您才能應用它。匿名函式不允許您這樣做。這就是為什么根使用矩陣而不是匿名函式的原因。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/531267.html
標籤:功能matlab根
