二次积分算法(Python)

二次积分算法(Python)

代码简介

首先从txt文件中导入具有x,y数据的文件,第一列为x数据,第二列为y数据,文件读取到代码之后,切片为timeMat = []; yaccMat = [],然后根据梯形面积求和积分,求出梯形面积然后求和前j项,同样的方法求出一次积分和二次积分,使用matplotlib库画出折线图。

import numpy as np
import matplotlib.pyplot as plt

timeMat = []; yaccMat = []
with open('123.txt') as file_object: #123.txt是文件名
    contents = file_object.readline()
    for line in file_object.readlines():
        lineArr = line.strip().split()
        timeMat.append(float(lineArr[0]))
        yaccMat.append(float(lineArr[1]))

print(timeMat)
print(yaccMat)

#一次积分
integral = []
integral_yaccMat = []
i = 0
for i in range(0, len(timeMat)-1):
    summ = (timeMat[i+1]-timeMat[i])*(yaccMat[i+1]+yaccMat[i])/2
    integral.append(summ)
integral.append(0)
i = 0; j = 0
sum_list = 0.0
for i in range(0, len(timeMat)):
    for j in range(0, i):
        sum_list += integral[j]
    integral_yaccMat.append(sum_list)
print(integral_yaccMat)

#二次积分
integral2 = []
integral2_yaccMat = []
i = 0
for i in range(0,len(timeMat)-1):
    summ = (timeMat[i+1]-timeMat[i])*(integral_yaccMat[i+1]+integral_yaccMat[i])/2
    integral2.append(summ)
integral2.append(0)
i = 0; j = 0
sum_list = 0.0
for i in range(0, len(timeMat)):
    for j in range(0, i):
        sum_list += integral2[j]
    integral2_yaccMat.append(sum_list)
print(integral2_yaccMat)
plt.plot(timeMat, integral2_yaccMat)
plt.show()

txt的文件格式

1703.952	0.0001
1703.952	-0.0038
1703.952	-0.0004
1703.952	-0.0009
1703.967	-0.0068
1703.967	0.0001
1703.967	-0.0034
1703.983	-0.0014
1703.983	-0.0036
1703.983	-0.0102
1703.983	-0.0026
1703.999	-0.0034
1703.999	-0.0087
1703.999	-0.0366
1704.014	0.1373
1704.014	-0.0048
1704.014	-0.1262
1704.03	-0.1352
1704.03	-0.1415
1704.03	-0.2282
1704.046	-0.3232
1704.046	-0.2744
1704.046	-0.4775
1704.092	-0.4382
1704.092	-0.3981
1704.092	-0.4013
1704.108	-0.498
1704.108	-0.5495
1704.108	-0.5568
1704.108	-0.539
1704.108	-0.5458
1704.108	-0.5468
1704.108	-0.6349
1704.108	-0.6623
1704.108	-0.59
1704.108	-0.5744
1704.124	-0.446
1704.124	-0.4203
1704.124	-0.2912
1704.139	-0.3681
1704.139	-0.3127
1704.139	-0.1252
1704.155	-0.2863
1704.155	-0.3351
1704.155	-0.0837
1704.171	-0.1501
1704.171	-0.0637
1704.171	0.0147
1704.202	0.0667
1704.202	0.095
1704.202	0.2462
1704.202	0.378
1704.202	0.4359
1704.202	0.4683
1704.217	0.5921
1704.217	0.7
1704.217	0.7525
1704.233	0.7632
1704.233	0.8641
1704.233	0.8167
1704.233	0.783
1704.249	0.7711
1704.249	0.7542
1704.249	0.678
1704.264	0.6797
1704.264	0.7418
1704.264	0.606
1704.311	0.502
1704.311	0.0584
1704.311	0.0172
1704.342	0.0054
1704.342	0.0057
1704.342	0.0396
1704.342	0.0118
1704.342	-0.0065
1704.342	-0.0217
1704.342	-0.0212
1704.342	-0.0263
1704.342	-0.0195
1704.342	-0.0192
1704.342	-0.0129
1704.342	-0.0092
1704.342	-0.0117
1704.358	-0.0082
1704.358	-0.0085
1704.358	-0.0007
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值