Как использовать приближение наименьших квадратов в MATLAB?

StackOverflow https://stackoverflow.com/questions/1832429

Вопрос

Для домашнего задания по линейной алгебре я решил следующее уравнение, используя MATLAB. \ оператор (это рекомендуемый способ сделать это):

A = [0.2 0.25; 0.4 0.5; 0.4 0.25];
y = [0.9 1.7 1.2]';
x = A \ y

что дает следующий ответ:

x =
1.7000
2.0800

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

Как я могу найти способ сделать это в MATLAB?

Предыдущая работа:Я нашел функцию lsqlin, который, кажется, способен решать уравнения вышеуказанного типа, но я не понимаю, какие аргументы ему предоставить и в каком порядке.

Это было полезно?

Решение

млразделить, ("\") на самом деле тоже это делает.Согласно документация:

Если A — матрица размером mxn с m ~= n, а B — вектор-столбец с m компонентами или матрица с несколькими такими столбцами, то X = A\B — решение в смысле наименьших квадратов для уравнения под - или переопределенная система уравнений AX = B.Другими словами, X минимизирует норму (A*X - B), длину вектора AX - B.Ранг k A определяется из QR-разложения с поворотом столбца (подробнее см. Алгоритм).Вычисленное решение X имеет не более k ненулевых элементов на столбец.Если k < n, это обычно не то же самое решение, что и x = pinv(A)*B, которое возвращает решение методом наименьших квадратов.

Итак, на самом деле в первом задании вы решили уравнение с помощью LSE.

Другие советы

Включает ли ваше задание явное кодирование аппроксимации методом наименьших квадратов или просто использование другой функции, доступной в MATLAB?Если вы можете использовать другую функцию, один из вариантов: ЛСКР:

x = lsqr(A,y);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top