add script for lab 21

This commit is contained in:
dymik739 2023-04-02 18:15:09 +03:00
parent 77a51eac70
commit 34da704168
4 changed files with 2609 additions and 0 deletions

15
labs/21/README.md Normal file
View File

@ -0,0 +1,15 @@
# Як користуватися
Необхідно клонувати цей репозиторій, наприклад:
```
git clone http://10.1.1.1:3000/dymik739/physics-labs-collection.git
```
Далі потрібно перейти у папку зі скриптом
```
cd physics-labs-collection/labs/21/
```
та запустити скрипт, вказавши файл зі вхідними даними, наприклад:
```
python3 processor.py sample_data.txt
```

2534
labs/21/prettytable.py Normal file

File diff suppressed because it is too large Load Diff

51
labs/21/processor.py Normal file
View File

@ -0,0 +1,51 @@
import sys
import math
def avg(a):
return sum(a) / len(a)
resistances = []
settings = {'r': 4, "R2": 0.0, "R3": 0.0}
for raw_i in open(sys.argv[1], "r"):
i = raw_i.rstrip("\r\n")
if len(i) > 0:
if i[0] == "#":
cmd = i[1:].split()
if cmd[0] in settings:
settings[cmd[0]] = cmd[1]
else:
resistances.append([i.split()[0]] + [float(j.replace(',', '.')) for j in i.split()[1:]])
table_data = []
for i in resistances:
Rxi = [round(r*float(settings["R2"])/float(settings["R3"]), int(settings['r'])) for r in i[1:]]
R_avg = round(avg(Rxi), int(settings['r']))
table_data.append([i[0]] + Rxi + [R_avg])
from prettytable import PrettyTable
pt = PrettyTable()
pt.add_column("", list(range(1, len(table_data[0][1:-1]) + 1)) + ["❬Rx❭"])
for i in table_data:
pt.add_column(i[0], i[1:])
print(pt)
#print(table_data)
print("Обчислюємо значення S для кожного стовпця:")
for j in table_data:
s = math.sqrt( sum([ (i - j[-1])**2 for i in j[1:-1] ]) / (len(j[1:-1])*(len(j[1:-1])-1)) )
print(f"S ❬{j[0]}❭ = {round(s, int(settings['r']))}")
print("\nОбчислюємо значення σ для кожного стовпця:")
for j in table_data:
sigma = math.sqrt(avg([i**2 for i in j[1:-1]]) - avg(j[1:-1])**2)
print(f"σ{j[0]}❭ = {round(sigma, int(settings['r']))}")

9
labs/21/sample_data.txt Normal file
View File

@ -0,0 +1,9 @@
# R2 35000
# R3 4600
# r 15
R1x 3403,1 3400,0 3402,9 3403,1 3401,1
R2x 34,1 33,4 33,3 33,5 34,2
R3x 1771,7 1772,2 1772,2 1771,8 1771,5
R4x 740,0 741,0 740,7 741,2 740,8
R5x 2530,0 2533,0 2532,0 2532,9 2531,0