- 在线时间
- 479 小时
- 最后登录
- 2026-4-17
- 注册时间
- 2023-7-11
- 听众数
- 4
- 收听数
- 0
- 能力
- 0 分
- 体力
- 7790 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 2923
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1171
- 主题
- 1186
- 精华
- 0
- 分享
- 0
- 好友
- 1
该用户从未签到
 |
1.使用 np.polyfit() 函数对数据进行多项式拟合,分别拟合为一次、二次和三次多项式,得到拟合系数。$ o$ ~: ~" T0 R; u. f: o+ k$ B
2.使用 np.poly1d() 函数根据拟合系数创建多项式对象。
7 i) y0 n: r# `4 D2 [3.打印出三个多项式对象。
/ h4 A+ R1 [& n/ V4.生成一组新的 x 值,在指定范围内均匀分布。1 E- G+ [8 [5 _% g' b! {
5.使用多项式对象计算对应的 y 值。
* Q+ q, G9 R7 t# R% M2 t) |' W$ C6.使用 plt.scatter() 绘制原始数据点,使用 plt.plot() 绘制拟合曲线,并添加图例。
: y. T+ H" }: G7.最后,显示图形。+ l5 _6 l; ?( Q7 }8 R% {) ]
% g1 T4 s& c/ G/ j1 Q这段代码将原始数据拟合为一次、二次和三次多项式,并在同一图中展示了拟合曲线。
3 X4 s; y7 |' r5 K当你执行这段代码时,它会进行以下操作:; e1 p" `7 k( ?9 M: x4 H- Y
* y! H+ c4 J( y! h! U/ V4 N# @& X
1.导入所需库:
. ~( s- b1 H3 U+ B- import matplotlib.pyplot as plt$ y5 t1 y, z$ r9 S* b1 ]* y
- import numpy as np
1 q) x0 f4 Y6 r
复制代码 2.定义源数据:
S\" G* ?\" L/ e M3 T% f- x = np.array([1, 2, 3, 4])
* h1 ]# [8 Y: p* \ - y = np.array([4, 10, 18, 26])
g9 A k& n1 U4 d1 B) t
复制代码 这里 x 和 y 分别是输入数据的 x 和 y 值,用于进行多项式拟合。
' N7 ?: D @ @3 p# N% o1 c* j' Y; }( W7 A7 i: M: |
3.多项式拟合:- z1 = np.polyfit(x, y, 1)
* x5 k) @+ |, f6 O$ ]! {\" P ~( k\" ^ - z2 = np.polyfit(x, y, 2)
4 z1 C9 l H8 ^5 N - z3 = np.polyfit(x, y, 3)
复制代码 使用 np.polyfit() 函数对数据进行多项式拟合,分别拟合为一次、二次和三次多项式,并返回拟合系数。) S; B" ] I, w* Q" E( m
8 |3 _$ L! |$ y4.创建多项式对象:- p1 = np.poly1d(z1); ?! O8 m2 d\" [2 i( u' t
- p2 = np.poly1d(z2)
' b+ U; V7 J0 m% j( n2 t8 g2 d6 [ - p3 = np.poly1d(z3); E* y1 y% e' i+ U: \
复制代码 使用 np.poly1d() 函数根据拟合系数创建多项式对象,这样可以方便地对多项式进行计算。% H& g. \8 Z# }
: M6 A1 u0 B& N" c5 ^" a
5.打印多项式对象:- print('p1 =\n', p1)
( ]# n9 l, V# v& f7 r4 y - print('p2 =\n', p2)
6 W1 s6 f6 J) Q3 S; p# i - print('p3 =\n', p3)
) ?7 P9 v4 [% `+ E$ L
复制代码 打印出三个多项式对象,分别对应一次、二次和三次多项式。1 V. `& E: H8 x. L2 u3 V7 [
+ S; c1 _/ _& Q$ l: |8 C
6.生成新的 x 值:- x1 = np.linspace(-2, 7, 100)
复制代码 使用 np.linspace() 函数生成了一组新的 x 值,在范围从 -2 到 7 之间均匀分布,用于绘制拟合曲线。
- l& y9 W! d+ `% }" I3 C; q! ~4 l+ o% L; @ N, ?7 X+ o
7.计算对应的 y 值:- y1 = p1(x1)' t+ U2 e1 v& ~\" L+ I' X h& M\" |: J
- y2 = p2(x1)0 q9 N& f2 K7 }0 S/ x3 Q9 G! F- y
- y3 = p3(x1)
复制代码 使用多项式对象 p1、p2 和 p3 计算了对应于新 x 值的 y 值。5 @2 H( u2 L$ R" ~* u, o
- i" s# J5 Z4 T Z3 R
8.绘制图形: - plt.scatter(x, y)2 P) @ p7 V5 U8 u9 t\\" L S) n, A
- plt.plot(x1, y1, label='linear')! K1 D- K- u- N4 j/ d( G
- plt.plot(x1, y2, label='quadratic') v/ n8 ~: `9 z/ c F, f
- plt.plot(x1, y3, label='cubic')+ @\\" }% Y$ L# j* e\\" @\\" k
- plt.legend()
使用 plt.scatter() 绘制原始数据点,使用 plt.plot() 绘制拟合曲线,并添加图例,标记不同曲线对应的多项式阶数。
9 `5 Z% m0 O# ~* g4 q- j; X& ?3 |$ V% X3 n# _) g
9.显示图形:最后,显示绘制的图形。
2 f! [; e- m& O" I; ?这样,你就能够看到原始数据点以及拟合的一次、二次和三次多项式曲线,并对其进行比较。9 v; j1 F2 q% R0 P+ Z
. N' {8 U8 Y4 ^. {+ U9 B f+ t' G8 l
: P9 z' S9 ^1 y9 f |
zan
|