Домашнее задание №6. Статистическая обработка результатов эксперимента

К заданию прилагается файл "measurements.txt". Он содержит данные эксперимента по растяжению образца из алюминия. Информация содержится в колонках: время (в секундах), сила (в Ньютонах), ход (в микрометрах, 1 мкм = 10-6м.), удлинение экстензометра (в микрометрах).

Задача: определить из экспериментальных данных модуль Юнга для алюминия.

Решение: первый шаг решения задачи: прочитать из файла данные и на их основе вычислить набор экспериментальных значений модуля Юнга. Файл содержит данные, полученные в ходе нескольких экспериментов, мы будем использовать данные одного эксперимента (первые четыре колонки).

Модуль Юнга связывает напряжения с деформациями следующим образом:\[ \sigma = E\varepsilon \]

где \( \sigma \) - продольное напряжение, \( \varepsilon \) - продольная деформация.

Напряжение находим по формуле\[ \sigma = \frac{N}{F} \] 

где \( N \) - продольное усилие (вторая колонка), \( F \) - площадь поперечного сечения образца, в нашем случае \( F = 0.02 * 0.002\)м2 . 


Для того, чтобы найти удлинение образца, нужно из хода (третья колонка) вычесть удлинение экстензометра (четвёртая колонка). Полученную разность разделить на длину образца (0.5 м), чтобы получить продольную деформацию.

Для того, чтобы найти модуль Юнга, делим напряжения на деформацию. В начальный момент времени (при t=0) продольная деформация равна нулю. Эти данные не должны обрабатываться. Для того, чтобы исключить эти данные, лучше воспользоваться константой double.Epsilonнапример

if (Math.Abs(tension) > double.Epsilon) // tension - переменная, содержащая 
                                        // значение деформации
{
    // обработка данных
}

В результате мы получаем выборку более чем из 800 экспериментальных значений модуля Юнга.

Дальнейший алгоритм обработки:

1. Исключаем из выборки значений наибольшее и наименьшее (это делается методами расширения OrderBy, Skip, SkilpLast).

2. Находим математическое ожидание \[ \bar X =\frac{1}{N}\sum\limits_{i=1}^N X_i \] \(N\) - количество элементов выборки, находим дисперсию \[ S_x^2 =\frac{1}{N-1}\sum\limits_{i=1}^N \left(X_i-\bar X\right)^2 \] находим среднее квадратичное отклонение \[ S_x =\sqrt{S_x^2} \]

3. Производим анализ в целях обнаружения грубых ошибок и промахов. Известно множество методов определения грубых ошибок статистического ряда. Наиболее простой метод - правило трех сигм: разброс случайных величин от среднего значения не должен превышать:

\[ X_{min,max}=\bar X\pm 3\sigma=\bar X\pm 3S_x \] убираем из выборки значения, которые не вписываются в интервал

4. Находим новые значения \( \bar X \), \( S_x^2\) и \( S_x\).

5. Находим доверительный интервал 2\( \mu \) по формуле

\[ \mu=\frac{S_x t}{\sqrt{N}} \]

где t - аргумент функции Лапласа, если доверительная вероятность равняется 0,95, то t = 1.96.

7. Определяем погрешность 

\[ \epsilon=\frac{\mu}{\bar X}*100% \]

8. Запишем истинное значение измеряемой величины \[ X=\bar X\pm\mu \] Вывод программы должен выглядеть примерно так:

Математическое ожидание 4.742e+010
Стандартное отклонение 4.568e+009
Коэффициент вариации 9.63%
Истинное значение измеряемой величины принадлежит интервалу
[4.711e+010, 4.772e+010] с вероятностью 95%
Для того, чтобы организовать красивый вывод результата, ознакомьтесь со страницей 

https://docs.microsoft.com/ru-ru/dotnet/standard/base-types/custom-numeric-format-strings

Для чтения данных из файла удобно использовать System.IO.File и регулярные выражения.