0 / 0 / 0
Регистрация: 03.11.2019
Сообщений: 13
1

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

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

Студворк — интернет-сервис помощи студентам
Дано функцию f(x). Найти линейную функцию ax+b которая наилучшим способом апроксимирует её. Использовать метод наименьших квадратов
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.11.2019, 18:46
Ответы с готовыми решениями:

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

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

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

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

18
0 / 0 / 0
Регистрация: 03.11.2019
Сообщений: 13
27.11.2019, 22:47  [ТС] 2
До сих пор актуально, и очень очень нужно
0
1291 / 908 / 479
Регистрация: 05.12.2013
Сообщений: 3,073
27.11.2019, 23:05 3
Цитата Сообщение от Placebo20 Посмотреть сообщение
Дано функцию f(x). Найти линейную функцию ax+b которая наилучшим способом апроксимирует её.
Задание не полное, нужна еще таблица точек которые нужно апроксимировать
0
3800 / 2350 / 413
Регистрация: 09.09.2017
Сообщений: 10,101
28.11.2019, 11:29 4
Цитата Сообщение от 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  [ТС] 5
У меея не было на это времени, а сейчас время поджимает
0
3800 / 2350 / 413
Регистрация: 09.09.2017
Сообщений: 10,101
28.11.2019, 13:01 6
Ну так не тратьте его попусту.
Метод наименьших квадратов не самая сложная задача даже в общем виде, для полинома произвольной степени, а уж в случае линейной аппроксимации можно хоть на лету для каждой новой точки пересчитывать.
0
0 / 0 / 0
Регистрация: 03.11.2019
Сообщений: 13
28.11.2019, 14:03  [ТС] 7
Я понял суть метода, но не знаю как его реализовать. Мне нужно сделать это задание в качестве лабораторной работы
0
3800 / 2350 / 413
Регистрация: 09.09.2017
Сообщений: 10,101
28.11.2019, 14:33 8
Если не знаете как реализовать, значит не поняли.
Ладно, давайте по шагам. Сформулируйте общий принцип метода и математику, которая за это отвечает. То есть вот у нас есть на входе набор точек (xi, yi) и надо найти коэффициенты уравнения y=a*x+b, которое бы наиболее точно совпадало с точками. Но "наиболее точно" это описание на человеческом языке. Какая математическая формула ему соответствует?
0
0 / 0 / 0
Регистрация: 03.11.2019
Сообщений: 13
28.11.2019, 20:32  [ТС] 9
Сумма квадратов отрезков от точки до линии?
0
4047 / 3301 / 923
Регистрация: 25.03.2012
Сообщений: 12,384
Записей в блоге: 1
28.11.2019, 20:37 10
ТабуретY, я так понимаю, выражение для функции известно и её можно найти в любой точке, проблема только в аппроксимации её линией, точки можно вычислять какие угодно по формуле функции.
0
1291 / 908 / 479
Регистрация: 05.12.2013
Сообщений: 3,073
28.11.2019, 20:59 11
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
выражение для функции известно и её можно найти в любой точке
Так в том-то и проблема, что выражение для функции не известно, ax+b это уравнение той линии которая будет аппроксимировать неизвестную функцию
0
4047 / 3301 / 923
Регистрация: 25.03.2012
Сообщений: 12,384
Записей в блоге: 1
29.11.2019, 01:03 12
ТабуретY, известна функция, y=x в кубе, например. Тебе её надо аппроксимировать линией на участке от -2, до 2. Никаких "узловых точек" тебе не дают и не кормят с ложечки, просто говорят "аппроксимируй икс в кубе".
Ты такой берёшь и
Метод наименьших квадратов
0
0 / 0 / 0
Регистрация: 03.11.2019
Сообщений: 13
29.11.2019, 01:22  [ТС] 13
Можно брать любую функцию, и аппроксимировать её линией
0
3800 / 2350 / 413
Регистрация: 09.09.2017
Сообщений: 10,101
29.11.2019, 11:01 14
Цитата Сообщение от Placebo20 Посмотреть сообщение
Сумма квадратов отрезков от точки до линии?
это опять фраза на человеческом языке, машина ее не поймет. Вы же говорите, что разобрались как работает метод наименьших квадратов. Так напишите формулу. Подсказка: там должен быть знак https://www.cyberforum.ru/cgi-bin/latex.cgi?\sum
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Тебе её надо аппроксимировать линией на участке от -2, до 2.
Жаль только в первом посте про диапазон ничего не говорится. Но, поскольку без него все равно аппроксимация невозможна, как-то он там задается

Добавлено через 43 минуты
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Метод наименьших квадратов не самая сложная задача
Ради интереса написал код, получилось около 30 строк, но это не для функции, а для потока точек. Зато промежуточный результат выдает на каждом шагу
1
4047 / 3301 / 923
Регистрация: 25.03.2012
Сообщений: 12,384
Записей в блоге: 1
29.11.2019, 11:43 15
COKPOWEHEU, ну, поток точек всегда можно вычислить и скормить алгоритму - показывай, интересно!
Если ещё и в вычислениях присутствуют икс-координаты точек, то это дело вообще можно заоптимизировать в сторону того, что координаты расположены на постоянном шаге h сетки, например.
0
3800 / 2350 / 413
Регистрация: 09.09.2017
Сообщений: 10,101
29.11.2019, 12:09 16
Все-таки не удержался и реализовал эту задачу. Разумеется, не в варианте "для школьников", описанном в 1-м посте.
Миниатюры
Метод наименьших квадратов  
Вложения
Тип файла: rar res.rar (517.7 Кб, 55 просмотров)
1
3800 / 2350 / 413
Регистрация: 09.09.2017
Сообщений: 10,101
29.11.2019, 12:12 17
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Если ещё и в вычислениях присутствуют икс-координаты точек
присутствуют, конечно, они же входят в метод наименьших квадратов.
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
это дело вообще можно заоптимизировать в сторону того, что координаты расположены на постоянном шаге h сетки, например.
Интереснее было бы сделать с разбиением оси каждый раз пополам либо по времени, либо по точности. Впрочем, вот этим мне заниматься лень
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
показывай, интересно!
А как тогда ТС разберется с алгоритмом если ему готовое решение дать?

Добавлено через 47 секунд
Хотя "для школьников" я погорячился, они частные производные вроде бы не проходят
0
4047 / 3301 / 923
Регистрация: 25.03.2012
Сообщений: 12,384
Записей в блоге: 1
30.11.2019, 02:27 18
мой вариант
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
3800 / 2350 / 413
Регистрация: 09.09.2017
Сообщений: 10,101
30.11.2019, 09:04 19
Если бы это не было сделано специально, я бы ужаснулся стилю кодирования Вот только количество точек и диапазон можно было вынести в переменные или константы, вряд ли бы такому коду это повредило.
Хорошо запрятали метод наименьших квадратов, я довольно долго искал.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.11.2019, 09:04
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru