Ehhez a programhoz a problémafelvetés és a motiváció a "Báint Péter, Tóth Imre Péter; Correlation Decay in Certain Soft Billiards" című cikkben olvasható, különösen annak 5. és 6. fejezetében. Az output0.txt .. outputb.txt fileok a forgasszimmetrikus potencialon valo szorodast mutatjak kulonbozo U(y) fuggvenyekre, ahol V(r)=U(1-r) a potencial. (Vagyis a hatosurag mindig R=1) Az algoritmusrol egyelore csak annyit, hogy a kozel erinto utkozesekre van kihegyezve, es KOZVETLENUL a (2+\kappa)/cos(\phi) -t szamolja, nem pedig a \kappa-t, a lehetosegekhez kepest elkerulve a kozeli ertekek kivonasabol szarmazo nagy numerikus hibat, illetve a cos(\phi)-vel valo osztast. Szerencses esetben kb harom jegy pontos eredmenyt ad, akar cos(\phi)=0.0001 eseten is. Mindig teljesulni kell az U(0)=0 feltetelnek, de az U'(0)=0 -nak nem. (Az U(0)<>0, R<>1 eset analitikusan visszavezetheto az U(0)=0, R=1 -re.) Az eredmenyeket megneztem, es jonak latszanak, megfelelnek a varakozasoknak. Nemelyik fileban hibauzenet is van. Ez azt jelenti, hogy a numerikus megoldo algoritmusnak nem sikerult megtalani r-kupak erteket. Ez az esetek nagy tobbsegeben minden bizonnyal csak programhiba. A tizenket file a kovetkezo tizenket potencial esetet tartalmazza: output0.txt U(y)=0 output1.txt U(y)=y*sqrt(y) output2.txt U(y)=0.5*y*sqrt(y) output3.txt U(y)=0.4*y*sqrt(y) output4.txt U(y)=0.6*y*sqrt(y) output5.txt U(y)=0.5*y output6.txt U(y)=0.4*y output7.txt U(y)=0.6*y output8.txt U(y)=0.5*(1-(1-y)^a) ahol a=1/2 output9.txt U(y)=0.5*(1-(1-y)^a) ahol a=2 outputa.txt U(y)=y^a ahol a=1.6 outputb.txt U(y)=y^a ahol a=1.4 A program javitott verziojaval a kovetkezo futtatasok szulettek: bp1: 3*y*sqrt(y) bp2: 0.4*y*sqrt(y) bp3: y bp4: 0.4*y bp5: 3*pow(y,1.6) bp6: 3*pow(y,1.4) Ezekbol abrak is talalhatok a bp.zip fileban. A fileok tartalma a kovetkezo: 1. sor: N=1000 ez nagyjabol a diszkret ideju szimulacio lepeskozenek megvalasztasat jelenti. Egesz pontosan azt, hogy a dt lepeskoz hanyad resze legyen a cos(phi) -nek (ami nagysagrendi becsles a kolcsonhatas idotartamara) 2. sor: fejlec az alabbi sorokhoz tovabbi sorok: egy-egy szimulacio eredmenye (kiveve az utolso oszlopot). Az egyes oszlopok jelentese: alpha: Pi/2-phi t: a kolcsonhatas idotartama DeltaTheta: a beeses es a tavozas helyenek szoge, a szokasos modon , a szimulacio alapjan (2+k)/(2cosfi): (2+\kappa)/(2*cos(\phi)) a szokasos jelolesekkel IntKappa: A DeltaTheta erteke, az elozo oszlopbol kiszedett kappa-ertekek visszaintegralasaval. FONTOS megjegyezni, hogy a (2+\kappa)/(2*cos(\phi)) ertekek NEM a szimulalt DeltaTheta ertekek numerikus derivalasaval szulettek, hanem kozvetlenul a szimulaciobol, minden egyes alpha-hoz a tobbitol fuggetlenul. Igy a harmadik es az utolso oszlop osszevetese alkalmas az eredmenyek ellenorzesere. Termeszetesen ahol a tenyleges DeltaTheta fuggveny szakad (jellemzoen Pi/2 -ben), ott a ket fuggveny kozott konstansnyi kulonbseg jelenik meg. Sot, ha nem szakad, akkor is csak modulo 2*Pi kell megegyezniuk. Erre van is pelda. Ahhoz, hogy a szimluaciot egy neked kedves potencilara le tudd futtatni, a kovetkezoket kell tenni: 1.) Masold at magadhoz a kappa2.c filet, hogy modositani tudd. 2.) Javitsd at a program elejen (kozvetlenul a bevezeto megjegyzesek es a valtozo-deklaraciok utan) az U(y) fuggveny definiciojat. 3.) Kozvetlenul utana javitsd at az Uv(y) fuggveny definiciojat is. Ennek az U(y) derivaltjanak kell lenni. Azert igy van megoldva, mert ha az ember beirja a derivaltat kezzel, a program gyorsabb es pontosabb lesz, mintha numerikusan kellene derivalni. 4.) Javitsd at a program vege fele a ``szamok=fopen("output4b.txt","w");`` sorban a kimeno file nevet a neked tetszo filenevre 5.) Mentsd el a programot 6.) Forditsd le a "gcc -lm kappa2.c" paranccsal. Az eredmeny egy "a.out" nevu futtathato file lesz. 7.) Az "a.out" parancs produkalja a szimulacios eredmenyeket.