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()
|