In [98]:
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import labwork
In [2]:
V = np.array([
0.06,
4.04,
8.08,
12.13,
16.08,
20.08,
24.00,
28.03,
32.03,
35.94,
39.98,
44.09,
46.00,
48.07,
52.03,
56.07,
60.04,
64.07,
66.15,
68.30, # WARNING
72.21,
75.99,
79.65,
18.01, # DOUBLE
19.02,
21.06,
22.00,
24.00,
34.00,
35.02,
36.09,
37.03,
38.06,
39.04,
61.11,
62.04,
64.09,
65.,
66.06,
67.14,
68.05,
69.,
70.,
60.00,
56.17,
])
I = np.array([
0.,
7.5,
24.5,
37,
49,
55,
27.5,
36.5,
58.,
77.,
75.,
64.,
63.,
64.,
74.,
87.,
97.5,
100.,
100.,
92.5,
95.,
100.,
106., # AVG
53.5, # DOUBLE
54.5,
50.5,
45.5,
25.5,
65.0,
70.0,
74.0,
75.5,
75.,
74.5,
91.,
92.,
93.5,
94.,
94,
94.,
94.5,
95.,
96.,
92.,
83.,
])
print(V.shape)
print(I.shape)
In [3]:
l_VI = list(zip(V, I))
l_VI.sort()
VI = np.array(l_VI)
VI.sort()
In [4]:
for p in VI:
print(list(p), ",")
In [35]:
VI = np.array([
[0.0, 0.059999999999999998] ,
[4.04, 7.5] ,
[8.0800000000000001, 24.5] ,
[12.130000000000001, 37.0] ,
[16.079999999999998, 49.0] ,
[18.010000000000002, 53.5] ,
[19.02, 54.5] ,
[20.079999999999998, 55.0] ,
[21.059999999999999, 50.5] ,
[22.0, 45.5] ,
# [24.0, 25.5] ,
[24.0, 27.5] ,
[28.030000000000001, 36.5] ,
[32.030000000000001, 58.0] ,
[34.0, 65.0] ,
[35.020000000000003, 70.0] ,
# [35.939999999999998, 77.0] ,
[36.090000000000003, 74.0] ,
[37.030000000000001, 75.5] ,
[38.060000000000002, 75.0] ,
[39.039999999999999, 74.5] ,
[39.979999999999997, 75.0] ,
[44.090000000000003, 64.0] ,
[46.0, 63.0] ,
# [48.07, 64.0] ,
[52.030000000000001, 74.0] ,
[56.07, 87.0] ,
# [56.170000000000002, 83.0] ,
# [60.0, 92.0] ,
[60.039999999999999, 97.5] ,
# [61.109999999999999, 91.0] ,
# [62.039999999999999, 92.0] ,
[64.069999999999993, 100.0] ,
# [64.090000000000003, 93.5] ,
# [65.0, 94.0] ,
# [66.060000000000002, 94.0] ,
[66.150000000000006, 100.0] ,
# [67.140000000000001, 94.0] ,
# [68.049999999999997, 94.5] ,
# [68.299999999999997, 92.5] ,
# [69.0, 95.0] ,
[70.0, 96.0] ,
[72.209999999999994, 95.0] ,
[75.989999999999995, 100.0] ,
[79.650000000000006, 106.0] ,
])
In [36]:
VIs = [None, None, None]
VIs[0] = VI
plt.figure(figsize=(14, 7))
plt.plot(VI[:, 0], VI[:, 1], marker="o")
plt.xlabel("V")
plt.ylabel("I")
plt.grid()
plt.show()
In [37]:
k = 69. / 60.
VI = np.array([
[0.06, 0.],
[4.01, 2.5],
[8.00, 26.5],
[12.01, 53.5],
[16.11, 77.5],
[19.03, 93],
[20.01, 95.5],
[20.51, 95.5],
[20.94, 95.],
[22.11, 88.5],
[23.06, 75.5],
[23.46, 66.],
[24.07, 20.5],
[26.09, 13.],
[27.00, 16.5],
[28.12, 25.],
[32.14, 70.],
[36.02, 106.],
# [36.09, 91 * k],
[37.04, 93* k],
[38.01, 94 *k],
[39.0, 92 * k],
[40.16, 86.5 * k],
[44.04, 71. * k],
[48.03, 58.5 * k],
[52.08, 64 * k],
[56.06, 79 * k],
[60.07, 90.5 * k],
[62.01, 91.5 * k],
[63.02, 92. * k],
[63.54, 92. * k],
[64.09, 92. * k],
[65.05, 91 * k],
[66.05, 90 * k],
[66.94, 89.5 * k],
[68.14, 88 * k],
])
In [38]:
VIs[1] = VI
plt.figure(figsize=(14, 7))
plt.plot(VI[:, 0], VI[:, 1], marker="o")
plt.xlabel("V")
plt.ylabel("I")
plt.grid()
plt.show()
In [39]:
VI = np.array([
[0.07, 0.],
[04.07, 0.0],
[08.08, 12.5],
[12.09, 44.],
[16.08, 73.],
[19.04, 92.],
[20.10, 96.],
[21.07, 97.5],
[21.51, 97.5],
[22.07, 96.],
[22.40, 94.],
[23.03, 90.],
[24.04, 24.],
[27.93, -5],
[32.04, 32.5],
[36.03, 78.8],
[37.01, 82.],
[38.00, 83.5],
[38.5, 84.5],
[38.95, 84.],
[39.9, 81.],
[40.03, 78.0],
[44.05, 58.],
[48.15, 36.],
[52.05, 30.],
[56.16, 43.5],
[60.18, 50.],
[61.01, 51.],
[62.05, 54.],
[63.09, 54.],
[64.08, 53.5],
[66.16, 50.5],
])
VIs[2] = VI
plt.figure(figsize=(14, 7))
plt.plot(VI[:, 0], VI[:, 1], marker="o")
plt.xlabel("V")
plt.ylabel("I")
plt.grid()
plt.show()
In [60]:
def locMax(X):
res = []
for i in range(1, len(X) - 1):
if (X[i - 1] <= X[i]) and (X[i] > X[i + 1]):
res.append(i)
return res
In [61]:
locMax(VIs[0][:, 1]), locMax(VIs[1][:, 1]), locMax(VIs[2][:, 1])
Out[61]:
In [75]:
lMs = ([7, 16, 26], [7, 19, 30], [8, 18, 29])
In [77]:
lMXYs[0]
Out[77]:
In [91]:
ans = []
plt.figure(figsize=(14, 7))
for i, VI in enumerate(VIs):
ans_i = []
plt.plot(VI[:, 0], VI[:, 1], label="{} volts".format(4 + i*2), marker=["o", "v", "*"][i])
for lM in lMs[i]:
if VI[lM, 1] == VI[lM - 1, 1]:
x = VI[lM - 1: lM + 1, 0].mean()
else:
x = VI[lM, 0]
plt.scatter(x, VI[lM, 1], color="red", s=100)
ans_i.append(x)
ans.append(ans_i)
ans = np.array(ans)
plt.xlabel("V [В]")
plt.ylabel("I (у.е.)")
plt.legend()
plt.grid()
plt.savefig("francl-hertz.png", dpi=300)
plt.show()
In [105]:
Ans = ans[:, 1] - ans[:, 0]
labwork.sciPrintR(Ans.mean(), 0.05) # Theory
labwork.sciPrintR(Ans.mean(), Ans.std() / Ans.mean() / (3 ** 0.5)) # est
In [86]:
ans[:, 2] - ans[:, 1]
Out[86]:
In [94]:
df = pd.DataFrame()
df["V"] = VIs[0][:, 0]
df["I"] = VIs[0][:, 1]
df
Out[94]:
In [95]:
df = pd.DataFrame()
df["V"] = VIs[1][:, 0]
df["I"] = VIs[1][:, 1]
df
Out[95]:
In [96]:
df = pd.DataFrame()
df["V"] = VIs[2][:, 0]
df["I"] = VIs[2][:, 1]
df
Out[96]:
In [ ]: