Здравейте. Обръщам се за помощ по задачата за вертикален регрес или както още е известна метод на най-малките квадрати.
Разполагам с данни (извадка от 20 измервания), за които трябва да построя регресионен рационален полином от 4-та степен. За целта, както е известно, необходимо е да се реши матричното уравнение
a = (Xt.X)^-1.Xt.y
Използвам следната библиотека, предлагаща операции за действия с матрици:
http://playground.arduino.cc/Code/MatrixMath
За мен поне библиотеката дава коректни резултати. Проведох тестове, като наблегнах на метода за обръщане на матрици. Операцията X^-1.X=diag(1) работи без грешка.
Проблемът ми е следния. За извадка от 20 измервания, библиотеката дава коректни резултати. Проведох тестове с Excel и Wolfram Mathematica. Коефициентите на полинома съвпадат точно. Когато намаля размера на извадката разликите са на порядъци! Моля, вижте приложените screenshots.
Как е възможно това? Прилагам една и съща програма към еднотипни задачи, но при малки размерности получавам разлики при тестването. Условието броят на точките да е равен на реда на полинома +1 е изпълнено при мен.
Предполагам, че не знам някоя тънкост от теорията. Моля за Вашето мнение по проблема. Предварително благодаря!

Меню