- 在线时间
- 480 小时
- 最后登录
- 2026-6-1
- 注册时间
- 2023-7-11
- 听众数
- 4
- 收听数
- 0
- 能力
- 0 分
- 体力
- 7823 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 2934
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1174
- 主题
- 1189
- 精华
- 0
- 分享
- 0
- 好友
- 1
该用户从未签到
 |
1.使用 np.polyfit() 函数对数据进行多项式拟合,分别拟合为一次、二次和三次多项式,得到拟合系数。
2 \5 Y# C& [! U; a2.使用 np.poly1d() 函数根据拟合系数创建多项式对象。# g+ \( d8 {. b% e! C9 e" q+ \8 x
3.打印出三个多项式对象。/ g8 T! J! R; w4 v& G" h5 Q
4.生成一组新的 x 值,在指定范围内均匀分布。7 M: s' @& O. W2 I" A" b) P0 V
5.使用多项式对象计算对应的 y 值。
R+ u8 N, ~* ]6 b6.使用 plt.scatter() 绘制原始数据点,使用 plt.plot() 绘制拟合曲线,并添加图例。' K% d0 E8 ]$ ~5 Z% J' G/ W
7.最后,显示图形。 ~* Z1 D$ |& O
% S- t, O9 F h. ~+ c9 e
这段代码将原始数据拟合为一次、二次和三次多项式,并在同一图中展示了拟合曲线。
5 z9 \- u Q6 r+ A* d9 H, o当你执行这段代码时,它会进行以下操作: s/ }# Q7 P0 ]
# E* d& |8 Y( @( a4 V0 W1.导入所需库:
3 B' ^- D) h; A6 B! F2 t- import matplotlib.pyplot as plt
7 _7 b( c* Y8 h! ^' t3 U2 j8 S - import numpy as np8 j: R* E! q0 b$ ^) U
复制代码 2.定义源数据:- , @1 V0 W* w2 b5 y% Q& X1 }
- x = np.array([1, 2, 3, 4])9 i2 c+ U D* p7 G% u! f& K) [+ t
- y = np.array([4, 10, 18, 26]); ]5 o$ A# V3 S0 Q; C5 O4 }' s! f
复制代码 这里 x 和 y 分别是输入数据的 x 和 y 值,用于进行多项式拟合。8 x" u) M( Y/ d) N% n$ j9 T
d: V. ]' Z, N5 K* k
3.多项式拟合:- z1 = np.polyfit(x, y, 1)8 G. n\" d6 G/ m/ Z3 [! a: q
- z2 = np.polyfit(x, y, 2)$ i9 y: p0 M) p$ X/ O9 R3 [6 M- q
- z3 = np.polyfit(x, y, 3)
复制代码 使用 np.polyfit() 函数对数据进行多项式拟合,分别拟合为一次、二次和三次多项式,并返回拟合系数。* Q7 b+ H3 C- p
8 ] B- m: j, ~; L, N I7 w4.创建多项式对象:- p1 = np.poly1d(z1): B' q% m, K9 |2 g. k
- p2 = np.poly1d(z2)
- l+ \; b- M. q - p3 = np.poly1d(z3)5 w- D& R; w: g6 U, V
复制代码 使用 np.poly1d() 函数根据拟合系数创建多项式对象,这样可以方便地对多项式进行计算。# ~; |; v( R1 _: h6 I$ I% B
* }* a5 d( m; r9 e
5.打印多项式对象:- print('p1 =\n', p1)
l v6 m# g$ ^% z\" o8 p, d - print('p2 =\n', p2)8 P4 M0 ~! K+ B$ ]6 x9 l# ~
- print('p3 =\n', p3)
8 a1 H6 h3 `+ ?: T. D0 c/ f$ o
复制代码 打印出三个多项式对象,分别对应一次、二次和三次多项式。% B: A- o! u7 [3 g6 }
7 r, `( ~. g- j. _6.生成新的 x 值:- x1 = np.linspace(-2, 7, 100)
复制代码 使用 np.linspace() 函数生成了一组新的 x 值,在范围从 -2 到 7 之间均匀分布,用于绘制拟合曲线。* ^8 u. V, ^1 r. V+ |" a
. `( w) R1 T1 p* n/ O! v
7.计算对应的 y 值:- y1 = p1(x1)) ^5 _) e' y: C3 ~8 @5 t
- y2 = p2(x1)/ Z& C% E' N( m6 I
- y3 = p3(x1)
复制代码 使用多项式对象 p1、p2 和 p3 计算了对应于新 x 值的 y 值。
! } G8 }& g3 ^3 n& }. ]
% [7 x t+ M5 q a' c& o+ a: x8.绘制图形: - plt.scatter(x, y)$ u+ j9 L5 y& R1 Y! a
- plt.plot(x1, y1, label='linear')
- ' |1 g* b: q* C; g8 l. \
- plt.plot(x1, y2, label='quadratic')
- 5 C3 C; B7 J: N5 Y( K$ c! H o
- plt.plot(x1, y3, label='cubic')
- / l' N$ x0 g; C; U
- plt.legend()
使用 plt.scatter() 绘制原始数据点,使用 plt.plot() 绘制拟合曲线,并添加图例,标记不同曲线对应的多项式阶数。
1 i3 l$ G1 o8 t, r2 ^/ W8 r+ X8 T: N' A/ R. x1 A/ e" ]* W4 r9 j
9.显示图形:最后,显示绘制的图形。4 p2 G3 ~2 m/ _& P. ]! y+ H
这样,你就能够看到原始数据点以及拟合的一次、二次和三次多项式曲线,并对其进行比较。7 |: y0 I$ Q: n1 {
1 ^5 E* b# ?% b; x& a. B
& T7 ?3 T4 ~' F3 T5 D
" o% m' i% Z. Q' T7 @+ L( K |
zan
|