- 在线时间
- 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() 函数对数据进行多项式拟合,分别拟合为一次、二次和三次多项式,得到拟合系数。6 }* w6 [% P" I& a2 f# G
2.使用 np.poly1d() 函数根据拟合系数创建多项式对象。
( r# P5 @4 G7 M; {# k3.打印出三个多项式对象。/ R) c9 Q$ V6 {( a2 P
4.生成一组新的 x 值,在指定范围内均匀分布。' q+ C7 l* l7 R2 E
5.使用多项式对象计算对应的 y 值。+ { d1 F$ x. g4 w5 e0 U# W; r$ T
6.使用 plt.scatter() 绘制原始数据点,使用 plt.plot() 绘制拟合曲线,并添加图例。
! c. r% s* @' w8 P7.最后,显示图形。+ q) u; ^8 `/ S; n# Q v
k$ o3 E' |* X* B2 h4 Y4 }1 V3 ]这段代码将原始数据拟合为一次、二次和三次多项式,并在同一图中展示了拟合曲线。: _; b8 F' ~, P! f; v, g8 n) h* T" C
当你执行这段代码时,它会进行以下操作:7 d8 T; T0 Z" {$ q
$ r) i3 f3 S+ \4 N$ y2 J! R1.导入所需库:- ( G A% x t* @2 r. P
- import matplotlib.pyplot as plt! v\" @1 S: i& s: S8 x
- import numpy as np% ?9 o7 o* H6 a5 C9 R: U8 o
复制代码 2.定义源数据:
6 F* O% r: X% d. C; b9 M- x = np.array([1, 2, 3, 4])1 U) I# O+ J5 Q1 `5 p4 \2 Q
- y = np.array([4, 10, 18, 26])
, a- i: C3 N\" q7 X/ l
复制代码 这里 x 和 y 分别是输入数据的 x 和 y 值,用于进行多项式拟合。
0 s, @& e# G5 s8 o5 j+ ^ {
5 v: f! l1 |1 T: w+ r: c3.多项式拟合:- z1 = np.polyfit(x, y, 1) X8 U) R- k: L3 r
- z2 = np.polyfit(x, y, 2)$ o6 z5 d\" Y7 z& W
- z3 = np.polyfit(x, y, 3)
复制代码 使用 np.polyfit() 函数对数据进行多项式拟合,分别拟合为一次、二次和三次多项式,并返回拟合系数。( ?2 a: R/ U' n
: g8 I% _5 o: i; e- p* G+ T
4.创建多项式对象:- p1 = np.poly1d(z1)) B/ e) Z* _; w! B\" d. F
- p2 = np.poly1d(z2)2 @\" u# X; g+ H
- p3 = np.poly1d(z3)
9 _/ j. Q) k3 i2 u# K/ Q7 m
复制代码 使用 np.poly1d() 函数根据拟合系数创建多项式对象,这样可以方便地对多项式进行计算。+ C9 p9 U e' b1 i6 f, ]
* b: c( J0 D! c
5.打印多项式对象:- print('p1 =\n', p1)$ l\" h- b6 v4 m: @
- print('p2 =\n', p2)5 L j' ?* T9 {: d: o, } Q/ B# x
- print('p3 =\n', p3)
# n3 ]$ w, z7 P5 [' a6 K9 v
复制代码 打印出三个多项式对象,分别对应一次、二次和三次多项式。
v& V8 z4 ^. N( D3 I& V1 t
/ Z0 H0 c% y2 H5 v, P1 d6.生成新的 x 值:- x1 = np.linspace(-2, 7, 100)
复制代码 使用 np.linspace() 函数生成了一组新的 x 值,在范围从 -2 到 7 之间均匀分布,用于绘制拟合曲线。
. a6 `- B1 c6 q( M: h" M! g9 O. B; |+ }: X( U) L g
7.计算对应的 y 值:- y1 = p1(x1)8 ~' p4 Z0 ?. |# f3 K
- y2 = p2(x1)
* N9 o2 W7 ~% |% ~ S8 G& i0 D! R\" l - y3 = p3(x1)
复制代码 使用多项式对象 p1、p2 和 p3 计算了对应于新 x 值的 y 值。
3 ?, v& k, ?3 t* i9 F1 B
% C( k1 X d3 A, c. V; L' f/ I: a8.绘制图形: - plt.scatter(x, y)7 p8 ^% h* E- u% b w
- plt.plot(x1, y1, label='linear')
- + A9 f- S\\" i: \0 r8 X\\" }
- plt.plot(x1, y2, label='quadratic')' n( N9 Q3 u6 v7 n. |% d& C4 C0 b
- plt.plot(x1, y3, label='cubic')& Y) P# n' S, f4 Q% L( H
- plt.legend()
使用 plt.scatter() 绘制原始数据点,使用 plt.plot() 绘制拟合曲线,并添加图例,标记不同曲线对应的多项式阶数。
$ f" y" y6 l; ?" r3 Z0 \
5 B: n. J% P% M. B9.显示图形:最后,显示绘制的图形。
0 E7 C5 I: L9 i: ^2 V( T这样,你就能够看到原始数据点以及拟合的一次、二次和三次多项式曲线,并对其进行比较。; w7 A) T# l4 e# w( r8 ^& Q" ^% }) ?
6 W9 f' u) @- [+ ~) D- v6 _7 \8 E+ d5 y
0 O I5 H1 A5 I2 j1 f9 t8 f3 [
|
zan
|