Чи можу я запитати про різницю рішення x
двома наступними способами в Matlab:
Шлях 1: x = Ab
Шлях 2: x = inv((A.").*A)*(A."*b)
(p.s: перевернута матриця є зворотною)
Я думаю, що ці два способи мають дати те самерезультатів, але я не можу досягти цієї відповідності. Я хочу застосувати найменшу квадратну моду. Однак вона включає в себе багато різних типів матриць (транспонування, інвертування, а потім декілька), і під час написання на мові Matlab у мене виникає плутанина.
Дуже дякую за ваші коментарі!
Відповіді:
1 для відповіді № 1Формула найменшого квадрата, яка є
написано неправильно. В останньому b<-->y
в той час як p<-->x
.
Всередині inv()
функціонувати продукт між A."
і A
не є елементом, продуманим.
Також, згідно з правилом PEMDAS, неправильно приєднуватися A."
і b
всередині дужки, надаючи такому терміну пріоритет стосовно попереднього.
На закінчення, формула Matlab для LS:
x=inv((A.")*A)*(A.")*b;
Нарешті, ви можете також спростити вищевказану формулу за допомогою pinv()
функція, яка оцінює псевдоінверсію Мура-Пенроуза, тобто inv((A.")*A)*(A.")
. Справді pinv(A)
призведе до того ж результату, що і inv((A.")*A)*(A.")
і тому ви можете переписати рішення LS як
x=pinv(A)*b;