- 在线时间
- 479 小时
- 最后登录
- 2026-5-9
- 注册时间
- 2023-7-11
- 听众数
- 4
- 收听数
- 0
- 能力
- 0 分
- 体力
- 7813 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 2931
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1173
- 主题
- 1188
- 精华
- 0
- 分享
- 0
- 好友
- 1
该用户从未签到
 |
1.使用 np.polyfit() 函数对数据进行多项式拟合,分别拟合为一次、二次和三次多项式,得到拟合系数。* O$ I/ N$ k* ?2 R; x) j
2.使用 np.poly1d() 函数根据拟合系数创建多项式对象。* ?! j; q" E$ N/ _9 P$ M6 j7 h/ X4 J9 w
3.打印出三个多项式对象。
6 ^; A8 G8 Q% J, e4.生成一组新的 x 值,在指定范围内均匀分布。
; ^& S& Z' o6 s9 F: T5.使用多项式对象计算对应的 y 值。! r2 J' L! p, u% T7 b6 R% l& ^2 D% n
6.使用 plt.scatter() 绘制原始数据点,使用 plt.plot() 绘制拟合曲线,并添加图例。
' U& n! h; g) {4 t ]7.最后,显示图形。1 m( J; s- Q( u6 {4 O. ^+ @
. L( r6 Y7 o$ [5 N( ?这段代码将原始数据拟合为一次、二次和三次多项式,并在同一图中展示了拟合曲线。1 F# x2 n& R. s5 b
当你执行这段代码时,它会进行以下操作:
; q6 a2 L" |: N
. [+ T: X: n! J. ]7 M$ a% O+ Z* F& {1.导入所需库:- 7 f6 h\" x# ?+ M/ H) H- s
- import matplotlib.pyplot as plt
$ Z& O5 ~3 v8 L! u\" H; H- z/ u - import numpy as np, `. C9 ^; r n\" n1 G* d' F
复制代码 2.定义源数据:- Z& V7 s# W) |. D8 R+ t& Q
- x = np.array([1, 2, 3, 4])
2 M6 u' Z2 P& e+ J5 z* ~ - y = np.array([4, 10, 18, 26])6 z# K\" u9 V# i9 G) t( x+ I
复制代码 这里 x 和 y 分别是输入数据的 x 和 y 值,用于进行多项式拟合。6 w" w0 ^( t' T4 s/ H* Y
- c8 t; p* g9 o* f* o! X
3.多项式拟合:- z1 = np.polyfit(x, y, 1)
0 t1 g, {$ |9 G ~) t - z2 = np.polyfit(x, y, 2)% D6 a4 v- U% k. w6 Q* F
- z3 = np.polyfit(x, y, 3)
复制代码 使用 np.polyfit() 函数对数据进行多项式拟合,分别拟合为一次、二次和三次多项式,并返回拟合系数。
. u+ a; c# E" n" [0 @
5 k! v! `# y" n7 Y$ y' y4.创建多项式对象:- p1 = np.poly1d(z1): I, g7 x* h/ k+ ~4 D( T
- p2 = np.poly1d(z2)4 J0 o* E% C* ]$ q9 i: I
- p3 = np.poly1d(z3)0 S* G; O( J9 d; L; R
复制代码 使用 np.poly1d() 函数根据拟合系数创建多项式对象,这样可以方便地对多项式进行计算。
5 c9 }! a" p4 t+ a" A0 {9 `1 F+ C6 q7 U+ Z) H: J) P4 x9 h$ w: V
5.打印多项式对象:- print('p1 =\n', p1)
- }' o8 a: l2 [! ` i! ]3 h& j - print('p2 =\n', p2)
+ u( I) k( p# n\" K+ o - print('p3 =\n', p3)
- w1 w, W& d% H, ?: _2 Q: {
复制代码 打印出三个多项式对象,分别对应一次、二次和三次多项式。
# g; l# I- m5 Q
; X4 D# n6 d7 k6.生成新的 x 值:- x1 = np.linspace(-2, 7, 100)
复制代码 使用 np.linspace() 函数生成了一组新的 x 值,在范围从 -2 到 7 之间均匀分布,用于绘制拟合曲线。
8 K9 h5 o9 Y; _5 N; D
6 Z8 x7 \! Y( U- _6 Z7.计算对应的 y 值:- y1 = p1(x1)
& b# m0 `8 o% R+ } - y2 = p2(x1)
* G6 n' Q/ {- _$ H6 P\" a* u, E# f! a - y3 = p3(x1)
复制代码 使用多项式对象 p1、p2 和 p3 计算了对应于新 x 值的 y 值。6 ]3 P$ k$ G7 K* _9 d
3 h+ T5 c& K% S, E9 ^1 D) ^8.绘制图形: - plt.scatter(x, y)
- % p) w0 s- C/ W3 r\\" w9 A3 _7 n
- plt.plot(x1, y1, label='linear')8 o& R% X+ s! G; a* Y: Z0 J
- plt.plot(x1, y2, label='quadratic')9 B* y3 c& E% |$ i: ?; R
- plt.plot(x1, y3, label='cubic')
- \\" W8 s! Q+ ^\\" W7 |5 w9 W7 ~) B
- plt.legend()
使用 plt.scatter() 绘制原始数据点,使用 plt.plot() 绘制拟合曲线,并添加图例,标记不同曲线对应的多项式阶数。
2 M- V7 Q" n2 c7 g' G0 Z
% y( Q# S" J' i7 A6 C9.显示图形:最后,显示绘制的图形。! i) l! T# X( B2 T2 J
这样,你就能够看到原始数据点以及拟合的一次、二次和三次多项式曲线,并对其进行比较。
5 W8 h" i# c8 k* T- F ]( t' h2 ]0 f% r9 o' \: E
; I: q8 I# X; W) X( {) J
2 g' j* k4 `; `, Q |
zan
|