python 非线性多项式拟合_[Python] 二维曲线拟合 ( 含有笔记、代码、注释 )

本文详细介绍了Python中进行非线性多项式拟合的方法,包括一次函数、正弦函数的拟合,最小二乘法,线性回归以及更高级的拟合技术。并探讨了matplotlib、numpy和scipy库的相关函数,如matplotlib.pyplot、np.polyfit()、np.poly1d()、lstsq()和curve_fit()等,提供了丰富的代码示例和运行结果。
摘要由CSDN通过智能技术生成

多项式拟合一次函数

import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
from numpy import polyfit, poly1d 
%matplotlib inline

x = np.linspace(-5, 5, 100) # 产生[-5,5]的100个等间隔的数组
y = 4 * x + 1.5 # y是关于x的一次函数
noise_y = y + np.random.randn(y.shape[-1]) * 2.5 # y添加噪声后的函数值。
print(y.shape[-1]) # 100个元素

运行结果:

100

p = plt.plot(x, noise_y, 'rx') # 画红色叉叉就是rx,画红色叉叉虚线图就是rx--
p = plt.plot(x, y, 'b:') # 画蓝色点图,"b" 表示蓝色,":"表示点图。

d19c11580ab0b52a0505906213032d8f.png
coeff = polyfit(x, noise_y, 1)
print(coeff)

运行结果:

[4.00355516 1.55927961]

p = plt.plot(x, noise_y, 'rx')
p = plt.plot(x, coeff[0] * x + coeff[1], 'k-') # 画黑色实线图,"k" 表示实线,"-"表示实线。
p = plt.plot(x, y, 'b--') # 这里可看出拟合出一阶函数与原函数重合了,课通过注释该语句看出。

bbb621a7e0f44abcc68ecc3b167550b3.png
# 还可以用 poly1d 生成一个以传入的 coeff 为参数的多项式函数:
f = poly1d(coeff)
p = plt.plot(x, noise_y, 'rx') # 绘制红色叉叉散点图
p = plt.plot(x, f(x)) # 带入x点,画出f函数。

092de96f5a2951974fcc574cdb36c0e1.png

多项式拟合正弦函数

x = np.linspace(-np.pi,np.pi,100)
y = np.sin(x)

# 用一阶到九阶多项式拟合,类似泰勒展开:
y1 = poly1d(polyfit(x,y,1))
y3 = poly1d(polyfit(x,y,3))
y5 = poly1d(polyfit(x,y,5))
y7 = poly1d(polyfit(x,y,7))
y9 = poly1d(polyfit(x,y,9))

x = np.linspace(-3 * np.pi,3 * np.pi,100)

p = plt.plot(x, np.sin(x), 'k') # 黑色为原始的图形,
p = plt.plot(x, y1(x)) 
p = plt.plot(x, y3(x))
p = plt.plot(x, y5(x))
p &#
  • 6
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值