Как использовать приближение наименьших квадратов в MATLAB? - PullRequest
5 голосов
/ 02 декабря 2009

Для домашнего задания по линейной алгебре я решил следующее уравнение, используя оператор \ 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, которая, кажется, способна решать уравнения вышеупомянутого типа, но я не понимаю, какие аргументы приводить ее и в каком порядке.

Ответы [ 2 ]

6 голосов
/ 02 декабря 2009

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

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

В действительности, в первом задании вы решили решить уравнение с использованием LSE.

2 голосов
/ 02 декабря 2009

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

x = lsqr(A,y);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...