N = 25; % Anzahl Datenpunkte p = 4; % Grad Polynom u = rand(N,1); % N zufällige Eingangswerte y = rand(N,1); % N zufällige Ausgangswerte X = [ones(N,1) u u.^2 u.^3 u.^4]; % Regressionsmatrix theta = X \ y % Parameterschätzung mit Least-Squares e = y - X*theta; e'*e % Summe Fehlerquadrate N_test = 300; u_test = linspace(0, 1, N_test)'; % Testdaten X_test = [ones(N_test,1) u_test u_test.^2 u_test.^3 u_test.^4]; y_test = X_test*theta; figure(1) plot(u,y,'kx',u_test,y_test,'g') lambda = 1e-4; % Regularisierungsparameter X_plus = [X; sqrt(lambda)*eye(p+1)]; y_plus = [y; zeros(p+1,1)]; theta_ridge = X_plus \ y_plus % Parameterschätzung mit Ridge Regression y_ridge_test = X_test*theta_ridge; e_ridge = y - X*theta_ridge; e_ridge'*e_ridge % Summe Fehlerquadrate figure(1) hold on plot(u_test,y_ridge_test,'b') hold off axis([0 1 -1 2])