- 在线时间
- 472 小时
- 最后登录
- 2025-9-5
- 注册时间
- 2023-7-11
- 听众数
- 4
- 收听数
- 0
- 能力
- 0 分
- 体力
- 7687 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 2887
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1161
- 主题
- 1176
- 精华
- 0
- 分享
- 0
- 好友
- 1
该用户从未签到
 |
1.使用 np.polyfit() 函数对数据进行多项式拟合,分别拟合为一次、二次和三次多项式,得到拟合系数。
7 e- ~ @6 t# D# J% x1 }2.使用 np.poly1d() 函数根据拟合系数创建多项式对象。
) m# @2 r5 Y) Q2 z+ g3.打印出三个多项式对象。
2 a) _3 W, r2 j) V" i4.生成一组新的 x 值,在指定范围内均匀分布。
% \- h0 o+ g8 v3 E+ @$ B5.使用多项式对象计算对应的 y 值。) f% k* F$ h, h: ?7 \0 F
6.使用 plt.scatter() 绘制原始数据点,使用 plt.plot() 绘制拟合曲线,并添加图例。
9 X. X- x' T" X& s7.最后,显示图形。% B4 V+ g8 P. H n d) M: P3 r& ]: I' T
; J+ ~% i5 `3 ]: r0 i这段代码将原始数据拟合为一次、二次和三次多项式,并在同一图中展示了拟合曲线。
; k2 t: M+ Q" K' N0 I" [当你执行这段代码时,它会进行以下操作:
9 w* S6 u7 O/ r5 Y. ?, l0 s7 J& U# L( _" j7 G% ?
1.导入所需库:- & i* I9 O. s0 }8 s# d6 x1 P
- import matplotlib.pyplot as plt
* r# |4 Q' ^5 O4 f2 y8 ~/ X - import numpy as np
0 k. L& D: a+ s
复制代码 2.定义源数据:
* } a1 m7 }& t- x = np.array([1, 2, 3, 4])
4 U) D2 l' z' `. C3 C - y = np.array([4, 10, 18, 26])\" j3 q+ u8 Z7 z\" r) ?* m
复制代码 这里 x 和 y 分别是输入数据的 x 和 y 值,用于进行多项式拟合。
# W; T3 A4 o }7 B# _
* T5 [* V& t5 A7 b1 Q3.多项式拟合:- z1 = np.polyfit(x, y, 1)6 ?$ I9 Q. n! p9 ~3 ]
- z2 = np.polyfit(x, y, 2)
4 U1 m d9 C; |; N) B5 J# O$ F - z3 = np.polyfit(x, y, 3)
复制代码 使用 np.polyfit() 函数对数据进行多项式拟合,分别拟合为一次、二次和三次多项式,并返回拟合系数。3 v1 _3 q/ a& ?. ]6 l4 P+ \1 O
) C8 y$ a$ [# a1 W) \7 }
4.创建多项式对象:- p1 = np.poly1d(z1)) C% l6 ~$ c6 r1 p
- p2 = np.poly1d(z2), U, q. {( g# T, x4 Y
- p3 = np.poly1d(z3)
* {$ P( _) K3 W2 w+ C
复制代码 使用 np.poly1d() 函数根据拟合系数创建多项式对象,这样可以方便地对多项式进行计算。
/ {. u! s* ?. V P2 _. K f$ p. G- O
5.打印多项式对象:- print('p1 =\n', p1)
1 ~4 H2 b\" U: j3 M - print('p2 =\n', p2)
: Z- u1 F& c& e q. M# g - print('p3 =\n', p3)
7 e* B0 t/ \# d( i( F
复制代码 打印出三个多项式对象,分别对应一次、二次和三次多项式。& d6 C# Y8 \$ o$ S9 g
- h& J! Y0 j; x: _5 p# b
6.生成新的 x 值:- x1 = np.linspace(-2, 7, 100)
复制代码 使用 np.linspace() 函数生成了一组新的 x 值,在范围从 -2 到 7 之间均匀分布,用于绘制拟合曲线。
/ G; U' y+ _& C `+ j. j+ O( D/ W ^7 `( P0 e$ n
7.计算对应的 y 值:- y1 = p1(x1)
* X' q- H3 ^9 k; W+ u - y2 = p2(x1)0 H1 y2 _4 ]\" ?3 j' \
- y3 = p3(x1)
复制代码 使用多项式对象 p1、p2 和 p3 计算了对应于新 x 值的 y 值。
: _5 d* U* z/ T5 y% P4 ^' m! X
# |4 f' Y* {: x0 l# M3 e8 Y0 ]( I8.绘制图形: - plt.scatter(x, y); _+ {( ]# w2 R) M6 G* ] X7 R
- plt.plot(x1, y1, label='linear'), ?/ ]9 n; j* s* a1 v$ e& g
- plt.plot(x1, y2, label='quadratic')
- 6 ~* |5 [& d9 z4 s% Y% Z
- plt.plot(x1, y3, label='cubic')
- ! l4 b( M$ x+ t& j0 R
- plt.legend()
使用 plt.scatter() 绘制原始数据点,使用 plt.plot() 绘制拟合曲线,并添加图例,标记不同曲线对应的多项式阶数。
/ R" T) ?0 {1 x5 }! n+ Q
+ H; U! a2 ?+ R7 C9.显示图形:最后,显示绘制的图形。8 W }% h+ A9 O4 T A. O
这样,你就能够看到原始数据点以及拟合的一次、二次和三次多项式曲线,并对其进行比较。
& D0 S# I, e7 U1 s8 J3 H$ A" i/ B' n9 e% B/ [6 ^
$ G* X$ D: P9 ^2 t, H" z2 z: W
/ v) Z% X, Z' h* r& e7 a |
zan
|