# Gyakorlat 2019. 04. 24. - Kidolgozando feladatok
close all
output_precision(15)

disp("Gyakorlat 2019. 04. 24. - Kidolgozando feladatok");

disp("\n\
3. feladat\n\n\
Tekintsuk az f(x) = 1/(1 + 25x^2) fuggvenyt [-1, 1]-en.\n\
Ez az ugynevezett Runge fuggveny.\n\n\
Kozelitsuk f(x)-et Lagrange interpolacioval ugy, hogy\n\
egyenletesen veszunk fel meresi pontokat [-1, 1]-en.\n\n\
Tegyuk ezt meg 5, 6, 7, 8, 9, illetve 10 meresi ponttal.")

f = @(x) 1 ./ (1 + 25 * x.^2)


figure (1)
x = -1 : 0.01 : 1;

# kezzel is ki lehet irni egyesevel de talan igy gyorsabb
for k = 5 : 10 # k adja meg, hogy hany meresi pontot veszunk fel
  
  subplot(2, 3, k - 4) # 6 kepet kell csinalni, 2 x 3-ba rendezzuk, k - 4 az 1-tol 6-ig valtozik amint k 5-tol 10-ig
  
  hold on # tobb dolgot rajzolunk ki
  
  disp("\n\
  k:")
  k
  
  disp("\n\
  k reszre osztjuk [-1, 1]-et")
  xAdat = linspace(-1, 1, k)
  
  disp("\n\
  Itt a fuggveny ertekek:")
  yAdat = f(xAdat)
  
  plot(x, f(x)) # Runge fuggveny 
  
  plot(x, lagrange(xAdat, yAdat, x)) # Lagrange
  
  plot(xAdat, yAdat, 'ks') # meresek
  
  legend("eredeti f", "Lagrange", "Meresek", "location", "northeastoutside") # location northeastoutside biztositja az elhelyezeset a legend-nek
  
endfor

disp("\n\
Ugy tunik, hogy a kozepso puklijat egyre jobban kozelitik az interpolaciok,\n\
de a szeleken nagy a bizonytalansag.")

disp("\n\
Ezt egyebkent nezzuk meg pontosabban is, ismeteljuk meg az elozot,\n\
de most hasznaljunk 20 illetve 21 meresi pontot")

figure (2)

for k = 20 : 21
  
  subplot(1, 2, k - 19) # csak 2 kepunk lesz, tegyuk oket 1 sorba
  
  hold on # tobb dolgot rajzolunk ki
  
  # nem irjuk ki a kepernyore a reszeredmenyeket
  xAdat = linspace(-1, 1, k);
  yAdat = f(xAdat);
  
  plot(x, f(x)) # Runge fuggveny 
  
  plot(x, lagrange(xAdat, yAdat, x)) # Lagrange
  
  plot(xAdat, yAdat, 'ks') # meresek
  
  legend("eredeti f", "Lagrange", "Meresek", "location", "northeastoutside") # location northeastoutside biztositja az elhelyezeset a legend-nek
  
endfor

disp("\n\
Latszik, hogy kozepen szinte tokeletes az illesztes\n\
(nagyitsatok ra!), de a szeleken a hiba katasztrofalis.\n\n\
Tanulsag, hogy a meresi tartomany szelen is mindenkeppen\n\
legyunk kritikusak a polinomialis interpolacio eredmenyeit illetoen.")