Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Метод наименьших квадратов
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
haker_fox
Добрый день! Мне достался код, который из массива (назовём его y) вычисляет тангенс угла наклона прямой a. Само уравнение прямой y = ax + b и нас не интересует. Нужен только коэффициент a.

Формула для вычисления этого коэффициента широко известна, и приводится, например, тут.. Правда там его обозвали b, что сути не меняет.

В итоге получаем безразмерную величину. Так вот, код, который я получил, делит ещё это выражение для коэффициента на среднее арифметического массива y. Внятного ответа, зачем это, я не получил. Вернее, мне попытались объяснить, что таким образом коэффициент нормируется относительно массива или как-то так. Я этого не понимаю, ведь формула МНК приведена, и она для линейной зависимости одназначна. Кстати, по условию моей задачи нужно определить угол наклона прямой, "проведённой" через точки массива y. Нафига всё это делить на среднее арифметическое, я не знаю. Может быть кто-то встречался с подобным? Как я понимаю, когда величины в массиве распределены не по нормальному закону (а они распределены скорее по параболическому), то мы не вправе вычислять среднее арифметическое...

Спасибо за любые комментарии.
kovigor
Цитата(haker_fox @ May 28 2014, 15:22) *
Спасибо за любые комментарии.

И что, давно МНК стал алгоритмом построения прямой линии ? Вот, написано по вашей ссылке:

Цитата
Метод наименьших квадратов — это математическая процедура составления линейного уравнения ...

МНК вовсе не всегда дает прямую. См. первый том Пискунова, "Дифференциальное и интегральное исчисления".
А если по делу, то, насколько я понял, вам нужен алгоритм численного дифференцирования. Откройте того же Шелеста, "Микрокалькуляторы в физике", там расписано (стр. 123 и дальше). Или любую книгу по численным методам, вроде Бахвалова ...
Tanya
Цитата(kovigor @ May 28 2014, 18:01) *
И что, давно МНК стал алгоритмом построения прямой линии ? Вот, написано по вашей ссылке:

И прямой - тоже. Что захотим, то и делаем...
В общем случае минимизируется (ищется минимум) выражение типа:
Сумма ( вес(может зависеть от разного...)*(экспериментальное значение - теоретическое значение (параметры по которым ищется минимум)^2)
haker_fox
QUOTE (kovigor @ May 28 2014, 23:01) *
И что, давно МНК стал алгоритмом построения прямой линии ? Вот, написано по вашей ссылке:

Давно. Я не знаю даты создания МНК, иначе бы вам назвал срок.
QUOTE (kovigor @ May 28 2014, 23:01) *
МНК вовсе не всегда дает прямую. См. первый том Пискунова, "Дифференциальное и интегральное исчисления".
А если по делу, то, насколько я понял, вам нужен алгоритм численного дифференцирования. Откройте того же Шелеста, "Микрокалькуляторы в физике", там расписано (стр. 123 и дальше). Или любую книгу по численным методам, вроде Бахвалова ...

Уважаемый kovigor, я абсолютно не понял вашего комментария...( Я знаю, что МНК можно аппроксимировать не только прямые. но я кажется ясно написал, что по условию задачи мне нужна именно прямая, что код не мой, а достался мне в наследство, и мне всё понятно, кроме деления коэффициента a на среднее арифметическое массива.

QUOTE (Tanya @ May 28 2014, 23:19) *
И прямой - тоже. Что захотим, то и делаем...
В общем случае минимизируется (ищется минимум) выражение типа:
Сумма ( вес(может зависеть от разного...)*(экспериментальное значение - теоретическое значение (параметры по которым ищется минимум)^2)

Ваш комментарий мне ещё менее понятен.
Tanya
Цитата(haker_fox @ May 29 2014, 03:17) *
Ваш комментарий мне ещё менее понятен.

А мне - Ваш вопрос.
И мне непонятно, что Вам непонятно.
Вы бы формулу написали... непонятную.
Lagman
Цитата(haker_fox @ May 28 2014, 16:22) *
Само уравнение прямой y = ax + b и нас не интересует. Нужен только коэффициент a....
...
Так вот, код, который я получил, делит ещё это выражение для коэффициента на среднее арифметического массива y. Внятного ответа, зачем это, я не получил. Вернее, мне попытались объяснить, что таким образом коэффициент нормируется относительно массива или как-то так. Я этого не понимаю, ведь формула МНК приведена, и она для линейной зависимости одназначна. Кстати, по условию моей задачи нужно определить угол наклона прямой, "проведённой" через точки массива y. Нафига всё это делить на среднее арифметическое, я не знаю....

Может делением они находят коэф. b который вам не нужен (судя по вашей ссылке на МНК).
iiv
Цитата(haker_fox @ May 28 2014, 17:22) *
Формула для вычисления этого коэффициента широко известна, и приводится, например, тут.. Правда там его обозвали b, что сути не меняет.

В итоге получаем безразмерную величину.


да, формула по ссылке правильная. И величина в ней получается безразмерная, проверяем на пальцах, умножим последовательность X и Y на произвольное ненулевое число, тогда и числитель, и знаменатель умножатся на квадрат этого числа. Если умножать только последовательность Y на число, то b умножится на это число, что тоже верно.

Формулу можно вывести из дифференцирования суммы квадратов по неизвестных коэффициентам, и последующим решением линейной системы 2х2.
haker_fox
В общем наконечн мне всё разъяснили. Коэффициент a делят на ср. арифм. измеряемой величины (т.е. a / ср. ариф.) для того, чтобы величина этого коэффициента не зависела от амплитуды измеряемой величины, простите за тавтологию.

Честно говоря, я сам не до конца разобрался. Но код и алгоритм в целом не мной придуманы, пришлось поверить rolleyes.gif
Tanya
Цитата(haker_fox @ May 30 2014, 03:07) *
Честно говоря, я сам не до конца разобрался. Но код и алгоритм в целом не мной придуманы, пришлось поверить rolleyes.gif

Вот бы и разобрались, а не принимали на веру.
Это везде описано. И уж никак не относится к программированию, куда Вы поместили сей топик. Напишите на бумаге сумму квадратов отклонений, продифференцируйте по параметрам и приравняйте результат нулю. Получите уравнения, из которых все увидите сами.
haker_fox
QUOTE (Tanya @ May 30 2014, 16:42) *
Вот бы и разобрались, а не принимали на веру.
Это везде описано. И уж никак не относится к программированию, куда Вы поместили сей топик. Напишите на бумаге сумму квадратов отклонений, продифференцируйте по параметрам и приравняйте результат нулю. Получите уравнения, из которых все увидите сами.

Мне нет смысла не доверять людям с которыми я работаю, и которые потратили определённое время на получение этого результата. Но сам я действительно хочу разобраться, но не сейчас.

_Ivana
Цитата(haker_fox @ May 28 2014, 16:22) *
В итоге получаем безразмерную величину.
...
Кстати, по условию моей задачи нужно определить угол наклона прямой, "проведённой" через точки массива y. Нафига всё это делить на среднее арифметическое, я не знаю.

Пользуясь вашей терминологией - фиг там. Если у вас зависимость вольтов от секундов, то никакой безразмерности не наблюдется. И переводы тех же данных в киловольты от годов ситуацию не сильно спасут. И с "углом наклона" та же петрушка - возьмите в экселе график y = x и порастягивайте его по горизонтали/вертикали, понаблюдайте за углом.
haker_fox
QUOTE (_Ivana @ Jun 1 2014, 06:42) *
Пользуясь вашей терминологией - фиг там. Если у вас зависимость вольтов от секундов, то никакой безразмерности не наблюдется. И переводы тех же данных в киловольты от годов ситуацию не сильно спасут. И с "углом наклона" та же петрушка - возьмите в экселе график y = x и порастягивайте его по горизонтали/вертикали, понаблюдайте за углом.

Да, да, спасибо, я уже разобрался.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.