* 多項式運算與代數方程求解 數學軟件 Matlab Matlab基礎及應用 * 多項式轉化為符號表達式:poly2sym 四則運算:conv、deconv 導數與積分:ployder、polyint 求值與零點:polyval、polyvalm、roots、poly 多項式運算 主要內容 代數方程求解 線性方程組求解:linsolve 非線性方程組求解:fzero、solve * Matlab 多項式運算 在 Matlab 中,n 次多項式是用一個長度為 n+1的向量來表示,缺少的冪次項系數為 0 在 Matlab中表示為向量: 注:系數中的零不能省! 將多項式轉化成符號表達式:poly2sym >> poly2sym([2,-1,0,3]) 例: 2x3 - x2 + 3 [2, -1, 0, 3] Matlab 中多項式的表示方法 * 多項式四則運算 Matlab 沒有提供專門進行多項式加減運算的函數 多項式的加減就是其所對應的系數向量的加減運算 對于次數相同的多項式,可以直接對其系數向量進行加減運算; 如果兩個多項式次數不同,則應該把低次多項式中系數不足的高次項用 0 補足,然后進行加減運算。 例: p1 = 2x3 - x2 + 3 p2 = 2x + 1 p1 + p2 = 2x3 - x2 + 2x + 4 [2, -1, 0, 3] [2, 1] [0, 0, 2, 1] [2, -1, 2, 4] 多項式加減運算 * 多項式四則運算 k = conv(p,q) 例:計算多項式 2x3 - x2 + 3 和 2x + 1 的乘積 >> p = [2,-1,0,3]; >> q = [2,1]; >> k = conv(p,q); 多項式除法運算: [k,r] = deconv(p,q) 其中 k 返回的是多項式 p 除以 q 的商,r 是余式。 [k,r]=deconv(p,q) p=conv(q,k)+r 多項式乘法運算: * 多項式的求導 k=polyder(p) : 多項式 p 的導數; k=polyder(p,q) : p*q 的導數; [k,d]=polyder(p,q) : p/q 的導數,k 是分子,d 是分母 >> k1=polyder([2,-1,0,3]); >> k2=polyder([2,-1,0,3],[2,1]); >> [k3,d]=polyder([2,-1,0,3],[2,1]); 例:已知 p1 = 2x3 - x2 + 3,p2 = 2x + 1 求: p1’,( p1 p2 )’, ( p1 /p2 )’ 多項式的導數: polyder * 多項式的積分 I=polyint(p,c): 多項式 p 的不定積分,常數項為 c I=polyint(p) : 多項式 p 的不定積分,常數項為 0 >> I=polyint([2,-1,0,3]); 例:已知 p1 = 2x3 - x2 + 3 求 ,常數項取 0 多項式的積分: polyint * 多項式的值 計算多項式的值 代數 多項式求值 y = polyval(p,x): 計算多項式 p 在 x 點的值 注:若 x 是向量或矩陣,則采用的是 數組運算! >> p=[2,-1,0,3]; >> x=2; y=polyval(p,x) >> x=[-1, 2;-2,1]; y=polyval(p,x) 例:已知 p1 = 2x3 - x2 + 3,分別取 x=2 和一個 2?2 矩陣, 求 p1 在 x 的每個分量上的值 * 多項式的值 矩陣 多項式求值 Y=polyvalm(p,X) 采用的是普通矩陣運算 X 必須是方陣 例:已知 p = 2x3 - x2 + 3,則 polyvalm(p,A) = 2*A*A*A - A*A + 3*eye(size(A)) polyval(P,A) = 2*A.*A.*A - A.*A + 3*ones(size(A)) >> p=[2,-1,0,3]; x=[-1, 2;-2,1]; >> polyval(p,x) >> polyvalm(p,x) * 多項式的零點 x=roots(p):若 p 是 n 次多項式,則輸出是 p=0 的 n 個根組成的 n 維向量 若已知多項式的全部零點,則可用 poly 函數給出該多項式 p=poly(x) >> p=[2,-1,0,3]; >> x=roots(p) 例:已知 p = 2x3 - x2 + 3,求 p(x) 的零點 多項式的零