57 lines
1.0 KiB
Python
57 lines
1.0 KiB
Python
from matplotlib import pyplot as plt
|
||
import numpy as np
|
||
|
||
fig = plt.figure(figsize=(7, 4))
|
||
|
||
plt.grid(linestyle='--')
|
||
|
||
plt.xlabel('m', fontsize=15)
|
||
plt.ylabel('r^2, mm^2', fontsize=15)
|
||
|
||
r = [9, 15, 19, 23, 26.5]
|
||
r2 = [9, 12, 17, 20.5, 23.5]
|
||
r3 = []
|
||
err = [3, 3, 2, 2, 2, 2, 1.5, 1.5, 1.5, 1.5]
|
||
|
||
for i in range(5):
|
||
r3.append(r[i]**2)
|
||
r3.append(r2[i]**2)
|
||
|
||
for i in range(10):
|
||
print(r3[i])
|
||
|
||
err2 = []
|
||
for i in range(10):
|
||
err2.append(2*np.sqrt(r3[i])*err[i])
|
||
print(err2)
|
||
|
||
m = [1, 1, 2, 2, 3, 3, 4, 4, 5, 5]
|
||
|
||
plt.errorbar(m, r3, xerr=0, yerr=err2, fmt='o', linewidth=1)
|
||
|
||
def MNK(m, r2):
|
||
#r2 = r**2
|
||
up = 0
|
||
down = 0
|
||
up2 = 0
|
||
down2 = 0
|
||
for i in range(10):
|
||
up+=m[i]*r2[i]
|
||
down+=m[i]**2
|
||
up2+=r2[i]**2
|
||
down2+=m[i]**2
|
||
k=up/down
|
||
print(k, 1/np.sqrt(10)*np.sqrt(up2/down2-k**2))
|
||
|
||
|
||
MNK(m, r3)
|
||
x = np.linspace(1, 5, 10)
|
||
y = 117.45*x
|
||
|
||
plt.plot(x, y, linewidth=2, label='k = 117$\pm 5$')
|
||
|
||
|
||
plt.title('МНК приближение')
|
||
plt.legend(loc='upper center', fontsize=15)
|
||
plt.show()
|