In [9]:
import labwork
from labwork import *
import numpy as np
import matplotlib.pyplot as plt

In [5]:
help(labwork)


Help on module labwork:

NAME
    labwork

FUNCTIONS
    bordering(V)
    
    eval_mnk(x, y)
    
    linPlot(x, y, xlabel='', ylabel='', title='', figsize=(14, 7), fontsize=15, labplot=False, plot_to_zero=False)
        Строит график измерений x,y и линейное приближение
        зависимости по МНК (y = bx + a).
        Возвращает: a, b, sigma_a, sigma_b
    
    plotIntervals(x, x_std, y, y_std, xlabel='Значения', ylabel='Номер измерения', title='', fontsize=15)
        Строит сравнительный график значений x[i] c y[i],
        где x_std[i] и y_std[i] - их стандартные отклонения
    
    plt_lab_figure(X_max, Y_max, X_min=0, Y_min=0, k_off_x=1.05, k_off_y=1.05)
    
    prodErrorR(errors)
    
    prodErrorR_degs(errors)
    
    sciPrintD(val, dErr, name=None)
    
    sciPrintR(val, relErr, name=None)
    
    sciRoundR(V, V_R, unit='')
        По числу V и его относительной погрешности V_R
        возвращает строку, в которой число округлено по
        правилам лобораторных работ
    
    sqrt(...)
        sqrt(x)
        
        Return the square root of x.

FILE
    /home/shevkunov/code/workout/labs/labwork.py



In [7]:
L = np.array([273, 259.6, 229.6, 169.6])
x1_x2 = np.array([0.95, 0.9, 0.8, 0.6])

In [26]:
alpha_i = x1_x2 / L

In [72]:
errs = [prodErrorR([(0.1 / L)[i], (0.1 / x1_x2)[i]]) for i in range(len(L))]
for i in range(4):
    sciPrintR(alpha_i[i], errs[i], "alpha_%d =" % (i))


alpha_0 = 0.00347985347985 +- 0.000366302584129 ( 10.5263795229 %)
alpha_1 = 0.00346687211094 +- 0.000385210327266 ( 11.1111778843 %)
alpha_2 = 0.00348432055749 +- 0.000435542713513 ( 12.5000758778 %)
alpha_3 = 0.00353773584906 +- 0.000589626331231 ( 16.6667709628 %)

In [73]:
(x1_x2 / L).std(ddof=1) / (x1_x2 / L)


Out[73]:
array([ 0.00898003,  0.00901366,  0.00896852,  0.00883311])

In [74]:
alpha = (x1_x2 / L).mean()

In [75]:
sciPrintR(alpha, np.array(errs).max() / (4) ** 0.5, "alpha = ")  # разные способы оценить погрешность
sciPrintR(alpha, (x1_x2 / L).std(ddof=1) / alpha, "alpha = ")


alpha =  0.00349219549934 +- 0.000291018112724 ( 8.3333854814 %)
alpha =  0.00349219549934 +- 3.12492005578e-05 ( 0.894829644094 %)


In [54]:
f = np.array([241.6, 203.5, 163.5])
F = 3.6
d = 1. / (1. / F - 1. / f)
d


Out[54]:
array([ 3.65445378,  3.66483242,  3.68105066])

In [117]:
k = np.array([5, 6, 6]) 
w = np.array([5, 4.8, 4])  # ширина полосы на экран, см
Л2 = w / k
Л2_err = 0.1 / 5 / ((5) ** 0.5)
Л2


Out[117]:
array([ 1.        ,  0.8       ,  0.66666667])

In [118]:
Г = (f) / d
Г_err = prodErrorR([1 / f.min(), 0.1 / F])
Г


Out[118]:
array([ 66.11111111,  55.52777778,  44.41666667])

In [119]:
Л1 = Л2 / Г
Л1_err = prodErrorR([Г_err, Л2_err])
Л1


Out[119]:
array([ 0.01512605,  0.0144072 ,  0.01500938])

In [120]:
lambd = 660 * 1e-9 * 100

In [121]:
alpha_second = lambd / Л1
for i in range(3):
    sciPrintR(alpha_second[i], Л1_err)


0.00436333333333 +- 0.000130098542906 ( 2.98163199938 %)
0.00458104166667 +- 0.000136589804238 ( 2.98163199938 %)
0.00439725 +- 0.000131109813093 ( 2.98163199938 %)

In [128]:
sciPrintR(alpha_second.mean(), Л1_err)


0.00444720833333 +- 0.000132599386746 ( 2.98163199938 %)


In [125]:
Г_вода = 208 / (1. / (1./F - 1./208))
Л2_вода = 8.3 / 4
Л1_вода = Л2_вода / Г_вода
Л1_вода


Out[125]:
0.03654598825831703

In [144]:
alpha_aqua = lambd / Л1_вода
sciPrintR(alpha_aqua, Л1_err)


0.0018059437751004016 +- 5.38465974892e-05 ( 2.98163199938 %)

In [133]:
alpha / alpha_aqua


Out[133]:
1.9337232684008514

In [141]:
c = alpha_aqua /alpha_second.mean() 
x = (c - 1.3333) / (c - 1)
x


Out[141]:
1.561191241854115

In [143]:
Л1_err,


Out[143]:
0.029816319993794353

In [138]:
(1.33 - 1) * (1.44 - 1)


Out[138]:
0.14520000000000002

In [145]:
1.81 / (1.56 - 1.333333)


Out[145]:
7.985282374584745

In [ ]: