計算機求解多項式需要多次乘法,為了減少乘法次數可使用巢狀乘法。
如若多項式為:
則可使用巢狀法展開為:
% 巢狀乘法
% 使用霍納方法以巢狀形式計算多項式的值
% 輸入:多項式的階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 鍊錶的頭結點指標 ...