- 在线时间
- 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() 函数对数据进行多项式拟合,分别拟合为一次、二次和三次多项式,得到拟合系数。
" k" }- o2 a2 N9 m4 r8 T4 Y. q# E2.使用 np.poly1d() 函数根据拟合系数创建多项式对象。) }8 H7 l% r/ n- h! V
3.打印出三个多项式对象。
3 V/ Z! K" t9 U5 D3 u: u; X& j4.生成一组新的 x 值,在指定范围内均匀分布。$ r4 i- H- K. v# C& V
5.使用多项式对象计算对应的 y 值。
0 }3 @/ U6 l/ p4 z. X6.使用 plt.scatter() 绘制原始数据点,使用 plt.plot() 绘制拟合曲线,并添加图例。
% q2 k7 V- { \ J6 I, ]7.最后,显示图形。% F) Y: t- x- u
' o ?! f7 v7 h0 E这段代码将原始数据拟合为一次、二次和三次多项式,并在同一图中展示了拟合曲线。8 M' x3 a; h& Z
当你执行这段代码时,它会进行以下操作:1 z* Z, j- |: \, H# P& P& d3 F, R+ p
' [! w i" L) V; N! \9 O) E/ w2 N1.导入所需库:
( j9 R; z$ j5 o Q: {- import matplotlib.pyplot as plt
9 v8 n$ z' W9 R: J - import numpy as np+ W8 Q\" d6 }: f* ^
复制代码 2.定义源数据:- 5 h5 V) G, X/ {
- x = np.array([1, 2, 3, 4])
' Y+ x) I, t3 a3 z, u - y = np.array([4, 10, 18, 26])) f$ ~! f- @% [6 F' D5 z! a
复制代码 这里 x 和 y 分别是输入数据的 x 和 y 值,用于进行多项式拟合。8 o4 F, N A( Z0 U. s) e4 ~ O3 _# A
/ R- U: U! k" h3 ?7 a5 E
3.多项式拟合:- z1 = np.polyfit(x, y, 1)- u! M5 s/ b( t$ W& h
- z2 = np.polyfit(x, y, 2)& ?5 J, F. k8 s$ C* M2 w9 ?
- z3 = np.polyfit(x, y, 3)
复制代码 使用 np.polyfit() 函数对数据进行多项式拟合,分别拟合为一次、二次和三次多项式,并返回拟合系数。
$ q$ b3 g* A7 h8 a Y1 i' y
; \1 ]+ O4 N2 P4.创建多项式对象:- p1 = np.poly1d(z1)
# I7 K% d+ J: { - p2 = np.poly1d(z2) a7 Z! I- T$ ?; D5 G3 h, M
- p3 = np.poly1d(z3)0 G0 c2 V5 j4 c\" K: ] i5 y
复制代码 使用 np.poly1d() 函数根据拟合系数创建多项式对象,这样可以方便地对多项式进行计算。% ]; t0 I! l; m6 {! T" A9 t1 D' k q+ d
5 a2 W/ ~2 G8 [
5.打印多项式对象:- print('p1 =\n', p1)- e' D6 Q! F a, Z# h# U, q1 j+ m
- print('p2 =\n', p2)) Y3 i1 {\" f) L2 m c4 O
- print('p3 =\n', p3)
\" f, m7 C- n\" m% D9 _1 h
复制代码 打印出三个多项式对象,分别对应一次、二次和三次多项式。7 j6 S% o- q$ m }+ X$ J
5 e& C3 E% ?4 h+ f5 m
6.生成新的 x 值:- x1 = np.linspace(-2, 7, 100)
复制代码 使用 np.linspace() 函数生成了一组新的 x 值,在范围从 -2 到 7 之间均匀分布,用于绘制拟合曲线。" M! N+ W5 Z0 ?
& C1 N% m* s- I/ N
7.计算对应的 y 值:- y1 = p1(x1)
6 O' U) i! G\" p/ x0 z( F7 C - y2 = p2(x1)
8 T/ n1 O% @, v - y3 = p3(x1)
复制代码 使用多项式对象 p1、p2 和 p3 计算了对应于新 x 值的 y 值。( v0 e+ g& F' h$ [+ u
2 |) e( C2 K* y7 G; ]: ?
8.绘制图形: - plt.scatter(x, y)1 `% S0 ~' F. U( ^8 p
- plt.plot(x1, y1, label='linear')
- & j* [) K# D1 [. H Q
- plt.plot(x1, y2, label='quadratic')7 q- \( I$ a/ d, _5 O4 t' d6 q0 k* J
- plt.plot(x1, y3, label='cubic')2 J7 s, _+ K6 o: F
- plt.legend()
使用 plt.scatter() 绘制原始数据点,使用 plt.plot() 绘制拟合曲线,并添加图例,标记不同曲线对应的多项式阶数。
3 M6 N4 F) s$ e. v6 @# ~5 A. j* ?6 l9 m4 u' |% X+ B0 _
9.显示图形:最后,显示绘制的图形。7 |, W: Y& ^) a; R+ W
这样,你就能够看到原始数据点以及拟合的一次、二次和三次多项式曲线,并对其进行比较。1 E6 S% {( D0 e3 g
) e' k" T, u9 h
2 E$ @" |! K; Z4 R$ P
- L1 A5 Q4 A+ ?3 V4 ^7 n+ R: ~
|
zan
|