多項式巢狀乘法及matlab實現

2021-10-11 04:01:00 字數 838 閱讀 1085

計算機求解多項式需要多次乘法,為了減少乘法次數可使用巢狀乘法。

如若多項式為:

則可使用巢狀法展開為:

% 巢狀乘法

% 使用霍納方法以巢狀形式計算多項式的值

% 輸入:多項式的階d,

% d+1個係數構成的陣列c(第乙個元素為常數項),

% x座標需要進行求值的x位置,

% 如果需要的話,還有d個基點構成的陣列b

% 輸出:多項式在x點對應的值y

function y = nest(d,c,x,b)

if nargin<4

b=zeros(d,1);

endy=c(d+1);

for i=d:-1:1

y=y.*(x-b(i))+c(i);

end

可以驗證此演算法

若所有基點為0,可使用如下縮減形式的命令:

使用該命令可以得到同樣的結果,這是由於在nest.m中對於輸入引數的設定,如果輸入的引數個數小於4,基點被自動設定為0

由於matlab對於向量表達的無縫處理,巢狀命令可以同時估計一組x對應的多項式的值,如下:

本文參考自數值計算(原書第2版)

MATLAB多項式及多項式擬合

多項式均表示為陣列形式,陣列元素為多項式降冪係數 1.polyval函式 求多項式在某一點或某幾個點的值.p 1,1,1 x 2 x 1 x 1,0,1 y polyval p,x 另外求函式在某一點或某幾個點的值可以用函式feval.x 1,0,1 y feval x exp x x 注意用的乘法...

多項式乘法

時間限制 c c 1秒,其他語言2秒 空間限制 c c 262144k,其他語言524288k 64bit io format lld et reo 吃完了元宵,又開始思考數學問題了。這次他拿了兩個多項式 p mathscrp 和 q mathscrq 他知道這兩個多項式的乘積也是乙個多項式,但他不...

多項式乘法

l1和l2是兩個帶頭結點的單鏈表表示的多項式,編寫演算法計算兩個多項式的乘積,運算結果仍用單鏈表進行儲存 include using namespace std typedef struct lnode lnode,linkedlist 查詢計算結果應該插入的位置 param l 鍊錶的頭結點指標 ...