- 在线时间
- 479 小时
- 最后登录
- 2026-4-13
- 注册时间
- 2023-7-11
- 听众数
- 4
- 收听数
- 0
- 能力
- 0 分
- 体力
- 7789 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 2922
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1171
- 主题
- 1186
- 精华
- 0
- 分享
- 0
- 好友
- 1
该用户从未签到
 |
1.使用 np.polyfit() 函数对数据进行多项式拟合,分别拟合为一次、二次和三次多项式,得到拟合系数。5 U+ e0 G7 F/ p0 D, Y* U6 P
2.使用 np.poly1d() 函数根据拟合系数创建多项式对象。
1 Y) O4 u3 h% S) A2 _) H3 ~3.打印出三个多项式对象。
. v3 P5 f4 R* j4.生成一组新的 x 值,在指定范围内均匀分布。
: d) v/ N1 _; W' ~- @5.使用多项式对象计算对应的 y 值。 `9 a0 ?( X( [4 r+ `
6.使用 plt.scatter() 绘制原始数据点,使用 plt.plot() 绘制拟合曲线,并添加图例。
2 V5 Y# `5 O1 V) R9 i' g( H, B7.最后,显示图形。
- E i' {' i: h: J; C# e# D$ U9 B$ R% B; p$ A, O, c0 `9 D
这段代码将原始数据拟合为一次、二次和三次多项式,并在同一图中展示了拟合曲线。' ~% m6 ^( Z; j7 [8 f
当你执行这段代码时,它会进行以下操作:
0 s+ G% S- k, B/ a6 @
- T2 B* ^8 \* w/ {, Y1.导入所需库:- / `; x4 w5 _\" O9 I
- import matplotlib.pyplot as plt
( S3 x3 C4 j# b$ R8 ~$ k: P# f - import numpy as np
2 K; d& H( F/ ] B3 T; B
复制代码 2.定义源数据:
/ ~* S. V0 l Z5 x- x = np.array([1, 2, 3, 4]); U# [& f7 i3 ^' Q; G
- y = np.array([4, 10, 18, 26])
\" Q+ h0 a/ N A% l- t
复制代码 这里 x 和 y 分别是输入数据的 x 和 y 值,用于进行多项式拟合。+ T! s9 D( f0 p! _3 B
5 `; ?% O' u6 ~
3.多项式拟合:- z1 = np.polyfit(x, y, 1)9 R( {' C5 [- T5 W/ D' W\" s# Q1 t
- z2 = np.polyfit(x, y, 2)
# j7 e/ Y$ D4 t+ [) t0 ]. I - z3 = np.polyfit(x, y, 3)
复制代码 使用 np.polyfit() 函数对数据进行多项式拟合,分别拟合为一次、二次和三次多项式,并返回拟合系数。
. Q7 H2 k. q$ y3 y* Q0 z6 i4 y
4.创建多项式对象:- p1 = np.poly1d(z1)
; l8 v2 |\" w; s! G9 W4 B8 G. i0 n - p2 = np.poly1d(z2)% s5 y' j! W9 p2 g
- p3 = np.poly1d(z3)% {- T8 B! _! P* S
复制代码 使用 np.poly1d() 函数根据拟合系数创建多项式对象,这样可以方便地对多项式进行计算。1 s/ Q& T E, I/ ~3 y; k1 \
g/ B* t5 Y, P+ t. {$ F% T' b
5.打印多项式对象:- print('p1 =\n', p1)
4 R6 \ P0 w8 g3 [ - print('p2 =\n', p2)7 c3 H& d& d/ Z6 G5 ]
- print('p3 =\n', p3)
8 w# l* x! B/ I0 K% R# L
复制代码 打印出三个多项式对象,分别对应一次、二次和三次多项式。
: n1 ]8 c0 i* t V! D" }* w3 t
& E* S k* R. q6.生成新的 x 值:- x1 = np.linspace(-2, 7, 100)
复制代码 使用 np.linspace() 函数生成了一组新的 x 值,在范围从 -2 到 7 之间均匀分布,用于绘制拟合曲线。
7 `1 j. M( s7 H. U) D+ r+ |) ^5 L0 u5 ?5 n5 v2 t+ k
7.计算对应的 y 值:- y1 = p1(x1)
: b1 \: Y9 p4 @, r\" i$ _/ V - y2 = p2(x1)
' Q1 x, o+ P e - y3 = p3(x1)
复制代码 使用多项式对象 p1、p2 和 p3 计算了对应于新 x 值的 y 值。" H8 `3 ~) R- h1 T8 h3 K
5 f4 ]. B% v" v8.绘制图形: - plt.scatter(x, y)
- # o) I# {- r, |2 U4 C4 C8 \
- plt.plot(x1, y1, label='linear')6 R5 C\\" r5 q u9 n2 ?: H/ i8 c
- plt.plot(x1, y2, label='quadratic')
- \\" @+ B$ u5 U/ g+ C
- plt.plot(x1, y3, label='cubic')$ d- @9 L2 ?( ` V# b% J$ E `\\" P
- plt.legend()
使用 plt.scatter() 绘制原始数据点,使用 plt.plot() 绘制拟合曲线,并添加图例,标记不同曲线对应的多项式阶数。% v6 H) @ B. x( Z- H, \4 ?
1 M+ u: W# @, i9.显示图形:最后,显示绘制的图形。: S7 E) G) `1 q+ Z( b
这样,你就能够看到原始数据点以及拟合的一次、二次和三次多项式曲线,并对其进行比较。2 C1 p$ a4 [; S7 E; V
. `5 b, m( [ c4 I" G9 Q- q& @+ o
+ T& ]' m& z& T" z0 @& y* M" w5 f
% k- N' N8 E* Q }0 j |
zan
|