Python在电路实验数据处理中的应用

2022-09-05 09:12赵文来杨俊秀陈秋妹
电气电子教学学报 2022年4期
关键词:测试数据投向数据处理

赵文来 杨俊秀 陈秋妹

(浙江理工大学 信息学院, 杭州 310018)

叠加原理的验证是“电路原理”实验课程中的基本内容之一,旨在求解电路中多源工作时,各支路的电流或端电压。对叠加原理的研究具有一定的实际意义,一方面叠加现象广泛应用于线性电路,另一方面非线性电路大多可通过线性化进行近似求解[1]。其实验数据量大,手工计算繁琐,实验老师也需要花长时间检查学生的实验数据质量。学生大多的实验数据是课下处理,有时候会遇到实验老师实验现场未检查出的测试数据问题,学生课下发现问题又不方便重新操作,利用Python的第三方库来处理叠加原理实验的数据,可与理论值进行快速比较,且判断测试数据误差,发现问题数据及时分析处理;同时,可通过简单计算判断叠加性及齐次性,且分析结果方便可视化,可大大提高数据处理的效率[2-3]。

1 Python

Python是面向对象的高级程序语言之一,其语句简洁,库类丰富,且采用开源设计,具有众多的第三方库和开源软件包的接口,已经成为应用于科学计算、数据库、网络工程等众多领域的高级语言。

实验数据处理采用了Python的numpy,scipy和matplotlib等库。numpy是开源的数值计算库,提供快速的数组矩阵运算,将叠加原理实验电路测试数据通过相应函数转化为数组;scipy是Python开源的数学、科学和工程计算包,可用于数据的最优化、线性代数、积分、插值、拟合、特殊函数、快速傅里叶变换、信号处理、图像处理、常微分方程求解器等;matplotlib是Python二维画图库,可以画出二维图像,应用该库可实现实验数据,及拟合曲线的可视化[4]。

2 实验步骤

叠加原理实验是电路实验的一个基本内容,测试电路图如图1所示。要分别完成以下操作步骤[5-7]:

(1)E1=+12 V电源单独作用时(将开关S1投向E1侧、开关S2投向短路侧),用直流数字电压表和毫安表测量各支路电流及各电阻元件两端电压。

(2)E2=+6 V电源单独作用时(将开关S1投向短路侧、开关S2投向E2侧),重复步骤(1)的测量和记录。

(3)令E1=+12 V和E2=+6 V共同作用时(开关S1和S2分别投向E1和E2侧),重复上述的测量和记录。

(4)将E1、E2均下调一半,即E1=6 V,E2=3 V,重复上述的测量并记录,验证齐次性规律。

(5)将R5换成一只二极管IN4007(即将开关S3投向二极管D侧),重复上述第(1)~(3)项内容,验证基尔霍夫定律定律的适用范围。

图1 叠加原理实验电路图

实际测量时,数据记录情况见4测试数据部分。

3 数据分析处理

3.1 软件环境

本代码在Win7系统上实现,基于Python3.6,并需要提前导入Python第三方软件库工具pip安装numpy,matplotlib,scipy等库。

3.2 Python实验数据处理

首先录入叠加原理实验测试数据,再利用numpy进行数据预处理,调用scipy求解多元线性方程组,并进行叠加性及齐次性验证。实现过程如下图2所示[3]。

图2 实验数据处理过程

3.3 部分代码

(a)导入第三方库文件:

import numpy as np

from scipy.linalg import solve

import matplotlib.pyplot as plt

(b)输入数据:

a = np.array([])

b = np.array([])

c1 = np.array([])

(c)求解理论值[8-9]:

x = solve(a, b) # 求解

(d)输出电参数理论值:

print(‘I1=’,‘%.3f’ % x[0],‘mA’)

Uab=(-1)*x[1]*1

print(‘Uab=’,‘%.3f’ % Uab,‘V’)

(e)误差分析并输出:

l=np.array([x[0],x[1],x[2],Uab,Ucd,Uad,Ude,Ufa]) # 理论值

e= np.array(c1-l) # 误差

print(‘I1 relative error =’,‘%.3f’ % (e[0]/x[0]))

print(‘Uab relative error =’,‘%.3f’ % (e[3]/x[0]))

plt.gcf().set_facecolor(np.ones(4)* 240 / 255)

# 生成画布的大小

plt.grid() # 生成网格

plt.scatter(l, e, color=‘black’)

plt.show()

4 测试数据

以某生测试的实验数据为例,见下表1所示,基于Python进行数据处理及误差分析。

4.1 测试数据质量优劣

以E1单独作用为例,将数据录入代码,理论求解为:I1=8.704 mA;I2=-2.413 mA;I3=6.292 mA;Uab=2.413 V;Ucd= 0.796 V;Uad= 3.209 V;Ude= 4.439 V;Ufa= 4.439 V。与测试值进行比较,得各电参数相对误差分别为:

I1 relative error = 0.003

I2 relative error = -0.008

I3 relative error = -0.011

Uab relative error = 0.010

Ucd relative error = -0.001

Uad relative error = -0.011

Ude relative error = -0.007

Ufa relative error = 0.002

且可将相对误差可视化,如下图3所示。

以此类推,学生可通过简单代码判断条件发生变化时,测试数据的质量。实验老师也可通过可视化误差,对学生实验数据进行快速判断优劣,大大提高实验数据处理效率。

表1 R5接入电路时电路参数

表2 二极管D取代R5接入电路时电路参数

图3 实验数据相对误差与理论值

4.2 叠加性、齐次性验证

线性电路满足叠加原理,表现为叠加性及齐次性,以叠加原理的齐次性为例,基于Python对测试数据进行处理。当E1为+12 V,E2为+6 V共同作用,各电参数测试值如上表1第三行数据所示,与表1第四行E1为+6 V,E2为+3 V工作时的数据比较,齐次性误差为:I1 error=0.090 mA,I2 error=-0.080 mA,I3 error=0.030 mA,Uab error=0.070 V,Ucd error=0.030 V,Uad error=0.040 V,Ude error=0.060 V,Ufa error=0.050 V。

将R5用二极管D取代,测试数据如下表2所示。

以叠加原理的叠加性为例,基于Python对测试数据进行处理。当E1为+12 V,E2为+6 V共同作用,各电参数测试值如上表2第三行数据所示,两电源单独作用时数据如第一、二行所示,代入程序对数据进行处理,计算得叠加误差为:I1 error=0.780 mA;I2 error=-2.360 mA;I3 error=-1.020 mA;Uab error=2.470V;Ucd error=-3.360 V;Uad error=-0.850 V;Ude error=0.420 V;Ufa error=0.480 V。从单独作用相叠加与共同作用的差值看,显然不满足叠加性。

5 结语

基于Python及第三方库来处理叠加原理实验的数据,通过与理论值比较,可判断测试数据优劣;同时,可通过简单计算判断叠加性及齐次性,且分析结果方便可视化,学生可根据曲线自行判断测试数据的质量。可见Python语言灵活方便且资源丰富,电路实验数据运用Python处理,学生数据处理时间大大缩短,实验后2~3天可处理好数据,且实验教师通过实验数据的可视化曲线及数据分析结果,有效提高实验教学作业批改效率,实验报告的优秀率由以前75%左右,上升为85%左右。

猜你喜欢
测试数据投向数据处理
基于ID3决策树算法的大学生体能测试数据管理系统设计
基于回收测试数据特点的判读方案设计与实现
认知诊断缺失数据处理方法的比较:零替换、多重插补与极大似然估计法*
无人机测绘数据处理关键技术及运用
中国大商场:为什么各国零售商都应把目光投向中国
我国信托业务类型及资金流向资产端发展现状
高层建筑沉降监测数据处理中多元回归分析方法的应用研究
高层建筑沉降监测数据处理中多元回归分析方法的应用研究
测试数据管理系统设计与实现
视频大数据处理的设计与应用