доброй ночи всем. для всех владельцев хрустальных шаров. начал домучивать прошивку для дозиметра и решил добавить плюшку в виде показа погрешности измерений. из скетчей самодельщиков дозиметров, понял что погрешность определяют кто во что горазд. в основном берут за основу время, типа 3600 секунд это 100% процентная точность и нулевая погрешность. чем время измерения меньше тем ниже точность и выше погрешность. в принципе логично. в "магазинных" дозиметрах как объяснено на одном сайте, используют определение погрешности на основе распределения Пуассона (во про какие матерки я прочитал) в общем по мотивам этого самого Пуассона возникла мысль как рассчитать %погрешности. в экселе обкатал этот способ, весьма симпатично и похоже на истину выходит. если вкратце, набирается массив Код (C++): pulse_analysis[array_size]; куда сохраняются число зарегистрированных импульсов в секунду. можно сделать несколько массивов 60 элементов, 120 и 180. потом находим среднее по массиву и среднеквадратичное отклонение (самое похожее на истину получается) потом делим среднеквадратичное на среднемассивное) умножаем на 100 и получаем погрешность в процентах. Код (C++): int8_t array_size =5; int16_t sum; //сумма всех элементов массива int16_t sum_pow; //сумма квадратов элементов массива int16_t average; //среднее int16_t average_pow; //средняя сумма квадратов int16_t pulse_analysis[array_size]; //массив считанных импульсов в секунду int16_t analys[array_size]; // int16_t analys_pow[array_size]; //массив квадратов импульсов int16_t rms; // среднеквадратичное отклонение int8_t accuracy;// точность в процентах //находим среднее значение элементов массива for (int i=0; i<=4; i++) { sum += pulse_analysis[i]; } average = sum/5; for (int J=0; J<=4; J++) { analys[J]=pulse_analysis[J]-average; // находим отклонение от среднего каждого элемента analys_pow[J]= pow(pulse_analysis[J],2); //возводим в квадрат величину отклоненияот среднего sum_pow += analys_pow[J] //находим сумму квадратов } average_pow=sum_pow/(array_size-1); // находим среднеквадратичное -1 элемент rms= sq(average_pow); // извлекаем корень находим среднеквадратичное отклонение accuracy = (rms/average)*100; //находим процент отклонения. не особо надеюсь что кто нибудь разберется что я наваял), однако если кто понял что я хотел выразить ( у кого хрустальный шар с тонкой настройкой). посоветуйте, такой способ определения погрешности измерения, имеет право на жизнь? я такого способа не разу не встречал в скетчах самодельщиков. а ведь он по моему весьма информативно показывает "размах" погрешности при измерении за определенный промежуток времени. и параллельно возникает вопрос как в некоторых дозиметрах сразу после включения он показывает погрешность +-25%, КАК??? он же не успел еще набрать статистики??? ладно всем приятного сна
1. Если вы объявляете array_size, то почему про него забываете сразу после объявления массива? Используйте и в for и в делении 2. Умозрительно по описанию алгоритм имеет право на существование. Используйте его и не парьтесь. Все-равно он не калиброван и измеряет непонятно что
Еще есть дисперсия Аллена, которая говорит, что долго измерять не очень хорошо. Мне кажется, что проще было бы написать ответ+-ранд(t)/36 % (t = 1..3600)