Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.66/29: Рейтинг темы: голосов - 29, средняя оценка - 4.66
0 / 0 / 0
Регистрация: 03.11.2019
Сообщений: 13

Метод наименьших квадратов

18.11.2019, 18:46. Показов 6307. Ответов 18

Студворк — интернет-сервис помощи студентам
Дано функцию f(x). Найти линейную функцию ax+b которая наилучшим способом апроксимирует её. Использовать метод наименьших квадратов
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.11.2019, 18:46
Ответы с готовыми решениями:

Метод наименьших квадратов
Ребят,вот в чем беда. нужно для курсового решить задачу. нужно апроксимировать данные линейной зависимостью y=ax+b. В ручную все уже...

Метод наименьших квадратов
Можете около сложных строчек написать что там происходит(комментарии) #include "stdafx.h" #include <tchar.h> #include...

Метод наименьших квадратов
В коде реализован метод наименьших квадратов. Помогите переделать в метод полиномов Чебышева. #include <tchar.h> #include...

18
0 / 0 / 0
Регистрация: 03.11.2019
Сообщений: 13
27.11.2019, 22:47  [ТС]
До сих пор актуально, и очень очень нужно
0
1741 / 913 / 480
Регистрация: 05.12.2013
Сообщений: 3,074
27.11.2019, 23:05
Цитата Сообщение от Placebo20 Посмотреть сообщение
Дано функцию f(x). Найти линейную функцию ax+b которая наилучшим способом апроксимирует её.
Задание не полное, нужна еще таблица точек которые нужно апроксимировать
0
 Аватар для COKPOWEHEU
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,921
28.11.2019, 11:29
Цитата Сообщение от Placebo20 Посмотреть сообщение
До сих пор актуально, и очень очень нужно
И вы за 10 дней даже не приступили?!
А если приступили - где наброски кода, алгоритма, математических формул?
Цитата Сообщение от ТабуретY Посмотреть сообщение
нужна еще таблица точек которые нужно апроксимировать
Есть же функция. Правда даже так не хватает диапазона. Скажем, если f(x)=x2, то на отрезке (-1...1) ее будет аппроксимировать y=0.37, а на диапазоне (0...1) уже y=x-0.158
0
0 / 0 / 0
Регистрация: 03.11.2019
Сообщений: 13
28.11.2019, 11:47  [ТС]
У меея не было на это времени, а сейчас время поджимает
0
 Аватар для COKPOWEHEU
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,921
28.11.2019, 13:01
Ну так не тратьте его попусту.
Метод наименьших квадратов не самая сложная задача даже в общем виде, для полинома произвольной степени, а уж в случае линейной аппроксимации можно хоть на лету для каждой новой точки пересчитывать.
0
0 / 0 / 0
Регистрация: 03.11.2019
Сообщений: 13
28.11.2019, 14:03  [ТС]
Я понял суть метода, но не знаю как его реализовать. Мне нужно сделать это задание в качестве лабораторной работы
0
 Аватар для COKPOWEHEU
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,921
28.11.2019, 14:33
Если не знаете как реализовать, значит не поняли.
Ладно, давайте по шагам. Сформулируйте общий принцип метода и математику, которая за это отвечает. То есть вот у нас есть на входе набор точек (xi, yi) и надо найти коэффициенты уравнения y=a*x+b, которое бы наиболее точно совпадало с точками. Но "наиболее точно" это описание на человеческом языке. Какая математическая формула ему соответствует?
0
0 / 0 / 0
Регистрация: 03.11.2019
Сообщений: 13
28.11.2019, 20:32  [ТС]
Сумма квадратов отрезков от точки до линии?
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
28.11.2019, 20:37
ТабуретY, я так понимаю, выражение для функции известно и её можно найти в любой точке, проблема только в аппроксимации её линией, точки можно вычислять какие угодно по формуле функции.
0
1741 / 913 / 480
Регистрация: 05.12.2013
Сообщений: 3,074
28.11.2019, 20:59
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
выражение для функции известно и её можно найти в любой точке
Так в том-то и проблема, что выражение для функции не известно, ax+b это уравнение той линии которая будет аппроксимировать неизвестную функцию
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
29.11.2019, 01:03
ТабуретY, известна функция, y=x в кубе, например. Тебе её надо аппроксимировать линией на участке от -2, до 2. Никаких "узловых точек" тебе не дают и не кормят с ложечки, просто говорят "аппроксимируй икс в кубе".
Ты такой берёшь и
0
0 / 0 / 0
Регистрация: 03.11.2019
Сообщений: 13
29.11.2019, 01:22  [ТС]
Можно брать любую функцию, и аппроксимировать её линией
0
 Аватар для COKPOWEHEU
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,921
29.11.2019, 11:01
Цитата Сообщение от Placebo20 Посмотреть сообщение
Сумма квадратов отрезков от точки до линии?
это опять фраза на человеческом языке, машина ее не поймет. Вы же говорите, что разобрались как работает метод наименьших квадратов. Так напишите формулу. Подсказка: там должен быть знак https://www.cyberforum.ru/cgi-bin/latex.cgi?\sum
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Тебе её надо аппроксимировать линией на участке от -2, до 2.
Жаль только в первом посте про диапазон ничего не говорится. Но, поскольку без него все равно аппроксимация невозможна, как-то он там задается

Добавлено через 43 минуты
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Метод наименьших квадратов не самая сложная задача
Ради интереса написал код, получилось около 30 строк, но это не для функции, а для потока точек. Зато промежуточный результат выдает на каждом шагу
1
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
29.11.2019, 11:43
COKPOWEHEU, ну, поток точек всегда можно вычислить и скормить алгоритму - показывай, интересно!
Если ещё и в вычислениях присутствуют икс-координаты точек, то это дело вообще можно заоптимизировать в сторону того, что координаты расположены на постоянном шаге h сетки, например.
0
 Аватар для COKPOWEHEU
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,921
29.11.2019, 12:09
Все-таки не удержался и реализовал эту задачу. Разумеется, не в варианте "для школьников", описанном в 1-м посте.
Миниатюры
Метод наименьших квадратов  
Вложения
Тип файла: rar res.rar (517.7 Кб, 55 просмотров)
1
 Аватар для COKPOWEHEU
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,921
29.11.2019, 12:12
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Если ещё и в вычислениях присутствуют икс-координаты точек
присутствуют, конечно, они же входят в метод наименьших квадратов.
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
это дело вообще можно заоптимизировать в сторону того, что координаты расположены на постоянном шаге h сетки, например.
Интереснее было бы сделать с разбиением оси каждый раз пополам либо по времени, либо по точности. Впрочем, вот этим мне заниматься лень
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
показывай, интересно!
А как тогда ТС разберется с алгоритмом если ему готовое решение дать?

Добавлено через 47 секунд
Хотя "для школьников" я погорячился, они частные производные вроде бы не проходят
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
30.11.2019, 02:27
мой вариант
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <windows.h>
#include <cmath>
int main(char*i,int f){
    int g,k,_,d;
    WNDCLASSEX j={48U,g=0,DefWindowProc,k=0,_^=_, NULL,LoadIcon(0,IDI_APPLICATION), LoadCursor(NULL, IDC_ARROW), (HBRUSH)6, 0,"@",LoadIcon(NULL, IDI_APPLICATION) };
    RegisterClassEx(&j);
    auto l=CreateWindowEx(0x200L,"@","@",207<<16,1<<31,1<<31,300,300,0,0,0,0);
    ShowWindow(l,1);
    UpdateWindow(l);
    HDC h=GetDC(l);
    MoveToEx(h,0,d^=d,0);
    for (int i = 1; i < 300; ++i) {
        LineTo(h,i,i+20*sin(i*0.1));
        g+=i*i;
        k+=i*20*sin(i*0.1);
        _+=i;
        d+=20*sin(i*0.1);
    }
    MoveToEx(h, 0, 0, 0);
    LineTo(h,(g*d-_*k)/(g*300-_*_)*300,300+(g*d-_*k)/(g*300-_*_)+(k*300-d*_)/(g*300-_*_)*300);
    MSG e;
    while (GetMessage(&e, NULL, 0, 0) > 0){
        TranslateMessage(&e);
        DispatchMessage(&e);
    }
    return 0;
}
1
 Аватар для COKPOWEHEU
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,921
30.11.2019, 09:04
Если бы это не было сделано специально, я бы ужаснулся стилю кодирования Вот только количество точек и диапазон можно было вынести в переменные или константы, вряд ли бы такому коду это повредило.
Хорошо запрятали метод наименьших квадратов, я довольно долго искал.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.11.2019, 09:04
Помогаю со студенческими работами здесь

Метод наименьших квадратов
Задание такое, составить программу аппроксимации функции f(x) в интервале , n неизвестных параметров и m точек, в которых задана функция ...

МНК (Метод наименьших квадратов)
Помогите с реализацией аппроксимации МНК. Есть экспериментальные данные, хочу аппроксимировать их МНК. Не хочу использовать мат пакеты,...

Метод наименьших квадратов! (с Pascal на C++)
Писал прогу на Паскале, так как не владею должными знаниями по С++ приходится просить помочь вас!!! Помогите перевести прогу написанную на...

Метод наименьших квадратов(численные методы)
Совсем не знаю как сделать задачу, если кто то сможет сделать буду очень благодарен и отблагодарю. Заранее спасибо))) Найти по методу...

Метод наименьших квадратов/лаба 3 - аппроксимация/ С++
Добрый день! Помогите исправить неисправность программы: #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;stdio.h&gt;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru