# Gyakorlat 2019. 05. 08. - Kidolgozando feladatok
clear
close all
output_precision(7)

disp("Gyakorlat 2019. 05. 08. - Kidolgozando feladatok");

disp("\n\
3. feladat\n\n\
Szimulaljuk az y = 3 * x^3 - 2 * x + 1 merest zajosan.\n\
Vegezzunk el 500db merest.\n\n\
Hatarozzuk meg es abrazoljuk a meresi pontokat legjobban kozelito\n\
a) masodfoku\n\
b) harmadfoku\n\n\
egyenletet.")

#########################################

meresekSzama = 500
# ratok volt bizva a tartomany valasztasa. 
# Alapvetoen tetszoleges, persze egy 3-adfoku fuggveny jo nagy tud lenni ugyhogy
# igyekezunk olyan tartomanyban maradni ahol meg latjuk mi tortenik
x = linspace(-3, 2, meresekSzama); 
zaj = randn(1, meresekSzama);
y = 3 * x.^3 - 2 * x + 1 + zaj;


# a) masodfoku
egyutthatok = polyfit(x, y, 2)

disp("\n\
Kozelito parabola egyenlete:")
disp(egyutthatok(1))
disp(" * x^2 + ")
disp(egyutthatok(2))
disp(" * x + ")
disp(egyutthatok(3))

figure (1)
plot(x, y, "b+")
hold on 
plot(x, polyval(egyutthatok, x), "r")
title("3. a) feladat")
legend("meresi pontok", "legjobban illeszkedo parabola")

# b) harmadfoku
egyutthatok = polyfit(x, y, 3)

disp("\n\
Kozelito harmadfoku egyenlet:")
disp(egyutthatok(1))
disp(" * x^3 + ")
disp(egyutthatok(2))
disp(" * x^2 + ")
disp(egyutthatok(3))
disp(" * x + ")
disp(egyutthatok(4))

figure (2)
plot(x, y, "b+")
hold on 
plot(x, polyval(egyutthatok, x), "r")
title("3. b) feladat")
legend("meresi pontok", "legjobban illeszkedo harmadfoku polinom")