LABORATORIUM 5 Grupa NP, wtorek 23.04.2024, godz 08:30
Napisz skrypt aproksymujący za pomocą metody najmniejszych kwadratów dane $(\mathbf{X},\mathbf{Y})$, gdzie $\mathbf{X}={2,4,...,20}$ a $\mathbf{Y} = \mathbf{X} + \xi$, przy czym $\xi$ jest zmienną losową z rozkładu normalnego o parametrach $\mu=0$ i $\sigma^2=2$
UWAGA! W skrypcie nie może zostać wykorzystana żadna pętla for lub while. Wyznaczanie współczynników musi być automatyczne, niezależnie od liczby danych wejściowych
Wymagania odnośnie zadania (w nawiasach podana punktacja):
Skrypt ma za zadanie wyznaczyć współczynniki $a_0$ i $a_1$ dopasowania liniowego (czyli aproksymacji liniowej) za pomocą metody najmniejszych kwadratów przedstawionej na wykładzie 5 na slajdach 2-4, tzn używając wzorów podanych na slajdzie 4. [2.0p.]
Do wykonania zadania należy wygenerować dane, tzn. wektory $\mathbf{X}$ oraz $\mathbf{Y}$, przy czym $\mathbf{X}$ to liczby $2,4,...,20$ natomiast wartości $\mathbf{Y}$ powstają poprzez dodanie do $\mathbf{X}$ wartości losowych z rozkładu Gaussa o parametrach $\mu=0$ i $\sigma^2=2$. Do otrzymania tych ostatnich należy wykorzystać funkcję numpy.random.normal(). [1.0p.]
Wyniki (współczynniki wielomianu) mają zostać wyświetlone w sposób czytelny, tj. umożliwiający szybkie zorientowanie się, że zadanie zostało wykonane poprawnie bez potrzeby zaglądania w kod. [0.5p.]
Należy wyznaczyć wektor współczynników $\mathbf{a} = (a_0, a_1)$ bezpośrednio tzn. za pomocą funkcji numpy.linalg.lstsq(XX, Y, rcond = None)[0], gdzie macierz $\mathbf{XX}$ składa się z dwóch kolumn: pierwsza to same wartości "1", natomiast druga to wektor $\mathbf{X}$. Do złożenia dwóch rzędów/kolumn można np. użyć funkcji numpy.vstack() [1.0p.]
Należy także wykonać wykres zaznaczając linią kreskowaną dopasowanie liniowe, a symbolami dane oraz wykonać do niego legendę (przykładowy rysunek poniżej). [0.5p.]