日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

学习笔记-Matlab之多项式详解

發布時間:2023/12/14 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 学习笔记-Matlab之多项式详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文內容概述:

  • 1、多項式的表示
  • 2、多項式的計算
    • polyval函數
  • 3、多項式的根
    • 1)數值根
      • roots函數
      • poly函數
    • 2)符號根
    • 特定區間內的根
      • fzero()
  • 4、多項式求微分和積分
    • 1)求微分/求導數
      • polyder函數
    • 2)求微分
      • polyint函數
  • 5、多項式曲線的擬合
    • polyfit函數

正文

多項式:諸如pnxn+pn?1xn?1+...+p2x2+p1x+p0p_nx^n+p_{n-1}x^{n-1}+...+p_2x^2+p_1x+p_0pn?xn+pn?1?xn?1+...+p2?x2+p1?x+p0?,包含非負整數指數單個變量的表達式。

1、多項式的表示

Mathlab將多項式表示為行向量,其中的每個元素是按降冪排序的系數,例如p=[p2,p1,p0]表示多項式p(x)=p2x2+p1x+p0p(x)=p_2x^2+p_1x+p_0p(x)=p2?x2+p1?x+p0?

多項式p(x)=4x5?3x2+x+1p(x)=4x^5-3x^2+x+1p(x)=4x5?3x2+x+1的表示:

p=[4 0 0 -3 2 1]

2、多項式的計算

根據特定值計算多項式

polyval(p,1) %計算多項式p,x=1的值,對于上述例子,輸出4

以矩陣形式計算多項式

X = [2 4 5; -1 0 3; 7 1 5]; Y = polyvalm(p,X) %輸出:Y = 154360 78561 19306549001 24072 59692215378 111419 269582

3、多項式的根

(1) 數值根

roots函數
例:創建一個向量以表示多項式 x2?x?6x^2?x?6x2?x?6,然后計算多項式的根。

p = [1 -1 -6]; r = roots(p) % 輸出 r=3-2

poly函數
poly 函數返回具有指定根的多項式。對向量執行運算時,poly 和 roots 為反函數,因此 poly(roots§) 返回 p。

p2 = poly(r) % 輸出 p2 =1 -1 -6

對矩陣執行運算時,poly 函數會計算矩陣的特征多項式。特征多項式的根是矩陣的特征值。因此,roots(poly(A)) 和 eig(A) 返回相同的答案(取決于舍入誤差、排序和縮放)。

(2)符號根:以符號形式計算多項式

solve函數
計算多項式的根

syms x % 聲明一個符號變量x s = solve(x^2-x-6) % 輸出 s =-23

factor函數
計算多項式各項的因子

F = factor(x^2-x-6) % 輸出 F = [ x + 2, x - 3]
(3)求特定區間內的根

使用 fzero 函數求多項式在特定區間內的根。例如,創建一個函數句柄以表示多項式 。

p = @(x) 3*x.^7 + 4*x.^6 + 2*x.^5 + 4*x.^4 + x.^3 + 5*x.^2;

在區間 [-2,1]內繪制該函數。

x = -2:0.1:1; plot(x,p(x)) ylim([-100 50]) grid on hold on

輸出:

從繪圖中,多項式在 0 和另一個接近 -1.5 的位置各有一個簡單的根。使用 fzero 計算并繪制接近 -1.5 的根。

Z = fzero(p, -1.5) %輸出Z=-1.6056 plot(Z,p(Z),'r*')

4、多項式求微分和積分

1)求微分/求導數
使用 polyder函數獲取多項式p(x)=x3?2x?5p(x)=x^3-2x-5p(x)=x3?2x?5的導數,生成的多項式為q(x)=ddxp(x)=3x2?2q(x)=\frac d {dx}p(x)=3x^2-2q(x)=dxd?p(x)=3x2?2

p = [1 0 -2 -5]; q = polyder(p) % 輸出 q = 3 0 -2

polyder 也可以計算兩個多項式積或商的導數。例如,創建兩個向量來表示多項式a(x)=x2+3x+5a(x)=x^2+3x+5a(x)=x2+3x+5b(x)=2x2+4x+6b(x)=2x^2+4x+6b(x)=2x2+4x+6
通過調用帶有單個輸出參數的 polyder來計算兩個多項式之積的導數,生成的多項式為c(x)=8x3+30x2+56x+38c(x)=8x^3+30x^2+56x+38c(x)=8x3+30x2+56x+38

a = [1 3 5]; b = [2 4 6]; c = polyder(a,b) % 輸出 c = 8 30 56 38

通過調用帶有兩個輸出參數的 polyder來計算兩個多項式之商的導數,生成的多項式為:q(x)=ddx[a(x)b(x)]=?2x2?8x?24x4+16x3+40x2+48x+36=q(x)d(x)q(x)=\frac d {dx}[\frac {a(x)} {b(x)}]=\frac {-2x^2-8x-2} {4x^4+16x^3+40x^2+48x+36}=\frac {q(x)} {d(x)}q(x)=dxd?[b(x)a(x)?]=4x4+16x3+40x2+48x+36?2x2?8x?2?=d(x)q(x)?

[q,d] = polyder(a,b) % 輸出 q =-2 -8 -2 d =4 16 40 48 36

(2)求微分
使用 polyint函數 對多項式p(x)=4x3?3x2+1p(x)=4x^3-3x^2+1p(x)=4x3?3x2+1求積分,生成的多項式為 q(x)=∫p(x)dx=x4?x3+xq(x)=\int p(x)dx=x^4-x^3+xq(x)=p(x)dx=x4?x3+x

p = [4 -3 0 1]; q = polyint(p) % 輸出 q = 1 -1 0 1 0

5、多項式曲線的擬合

此部分說明如何使用polyfit 函數將多項式曲線與一組數據點擬合。按照如下語法,使用 polyfit 求出以最小二乘方式與一組數據擬合的多項式的系數:

p = polyfit(x,y,n)

其中:

  • x 和 y 是包含數據點的 x 和 y 坐標的向量
  • n 是要擬合的多項式的次數

舉個栗子。

% 包含5個樣本點的測試數據(x,y) x = [1 2 3 4 5]; y = [5.5 43.1 128 290.7 498.4]; % 用三次多項式進行擬合,返回結果 p = polyfit(x,y,3) %輸出p= -0.1917 31.5821 -60.3262 35.3400繪制樣本點和擬合曲線,輸出結果如下圖。 x2 = 1:.1:5; y2 = polyval(p,x2); plot(x,y,'o',x2,y2) grid on s = sprintf('y = (%.1f) x^3 + (%.1f) x^2 + (%.1f) x + (%.1f)',p(1),p(2),p(3),p(4)); text(2,400,s)

總結

以上是生活随笔為你收集整理的学习笔记-Matlab之多项式详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。