Министерство Цифрового Развития, Связи И Массовых
Коммуникаций Российской Федерации
Ордена Трудового Красного Знамени Федеральное
Государственное Бюджетное Образовательное Учреждение
Высшего Образования
«Московский Технический Университет Связи и Информатики»
──────────────────────────────────────
Введение в Информационные Технологии
Петров Вячеслав БИН2406
Проверил:
Зимин С.И.
Лабораторная работа №3 «Введение
в численные методы на Python: Аппроксимация
и интерполяция данных измерений. Метод
наименьших квадратов»
Цель работы
Знакомство с численными методами для решения задач:
- линейная аппроксимация данных Листинг исходного кода
При введении коэффициентов 4 и 2 получаем следующие данные:
Коэффициенты |
a |
b |
Введённые значения |
4 |
2 |
Вычисленные значения |
3.9083968052461415 |
2.0028949518829595 |
В данном случае отклонения составили:
Отклонение ( |
0.091603194753858 |
0.002894951882960 |
Время на работу: 1.73 секунд
Почему коэффициенты различаются?
Метод наименьших квадратов минимизирует сумму квадратов ошибок, но не устраняет их полностью, поэтому итоговая прямая лишь приближает исходную зависимость.
Случайный шум – при deviationPer = 0.05 каждое значение y отклоняется на ±5% от истинной линейной зависимости, что приводит к небольшим изменениям вычисленных коэффициентов.
Объем данных – хотя 10 000 точек дают хорошее приближение, случайные отклонения всё же сохраняются.
Как сократить расхождения?
Усреднить результаты нескольких запусков – выполнение нескольких независимых экспериментов и усреднение найденных коэффициентов поможет уменьшить вариативность.
Уменьшить deviationPer – при deviationPer=0 все точки лягут точно на одну прямую, и метод выдаст коэффициенты, совпадающие с исходными.
Увеличить объем выборки – большее количество данных снижает влияние случайного шума на результат.
Улучшение точности
Выразим обработку значений в отдельную функцию, где на вход будут подаваться оригинальные коэффициенты; на выход – расчётные
Увеличим количество точек с 10’000 до 10’000’000
Сделаем 3000 независимых расчётов и усредним данные
Для ускорения, запустим независимые эксперименты в 4 потоках (по количеству физических ядер)
Усредним полученные значения с каждого эксперимента
Сделаем замер времени для каждого эксперимента, а также найдём суммарное время
Листинг обновлённой программы
Усреднённые значения
Коэффициенты |
a |
b |
Введённые значения |
4 |
2 |
Вычисленные значения |
4.000002529734285 |
1.9999999042153491 |
В данном случае отклонения составили:
Отклонение ( ) |
0.000002529734285 |
0.000000095784651 |
Время на работу: 18578.04 секунд / 5.16 часов (41.28 часов при однопоточной работе)
Сравнение значений
Коэффициенты |
a |
b |
Среднее значение ( |
Отклонение (I запуск) |
0.091603194753858 |
0.002894951882960 |
0.047249073318409 |
Отклонение (2 запуск) |
0.000002529734285 |
0.000000095784651 |
0.000001312759468 |
– коэффициент улучшения качества
– коэффициент увеличения времени
– коэффициент суммарного увеличения
точек
При увеличении количества точек в 30000000 раз это привело к увеличению точности в 35992 раз, а эквивалентное время (если бы запуск был на 1 ядре) увеличилось в 85909 раз, что ниже 3 порядка
Вывод:
В этой работе рассматривался метод наименьших квадратов. Исследовалась его применимость для аппроксимации линейной зависимости, а также анализировалось влияние случайного шума и объёма выборки на точность вычисленных коэффициентов.
На первом этапе эксперимента была создана выборка из 10 000 случайных точек с заданной линейной зависимостью и небольшим случайным отклонением. Затем методом наименьших квадратов были вычислены коэффициенты аппроксимирующей прямой. Однако из-за случайного разброса значений они не совпадали с исходными, хотя и были близки. Это связано с тем, что метод минимизирует среднеквадратичную ошибку, но не устраняет её полностью. Чтобы сократить расхождения, было предложено увеличить объём данных и усреднить результаты нескольких независимых запусков.
Во втором эксперименте была реализована многопоточная программа, в которой выполнялось 3000 независимых запусков на 10 000 000 точек в каждом. Это позволило значительно уменьшить погрешность, практически сведя её к нулю. Однако такое увеличение точности потребовало значительных вычислительных ресурсов: общий расчёт занял более 5 часов даже при использовании 8 потоков.
Результаты показали, что увеличение объёма данных и многократные запуски действительно повышают точность аппроксимации, но требуют существенных вычислительных затрат. Хотя метод наименьших квадратов не устраняет погрешность полностью, при достаточном количестве данных он позволяет получить практически идеальное соответствие с исходной зависимостью.
Основными преимуществами метода являются его простота, эффективность и возможность работы с зашумлёнными данными. Однако он чувствителен к выбросам и требует, чтобы зависимость между переменными была линейной или могла быть приведена к линейному виду.
Метод наименьших квадратов подходит для анализа данных, прогнозирования и построения регрессионных моделей, особенно если данные содержат небольшие случайные отклонения.
Москва 2025

)
)