Il meodo d Runge-Kua Rassumendo possamo de che l meodo d Runge- Kua d odne due consse nell esegue una esapolazone del pmo odne da a x(/ nel aluae la deaa x (/ e nell ulzzala pe oenee una sma d x( esaa al secondo odne. Vedamo la sequenza d calcolo: x( f f ( 0 O( Calcolo della deaa nel puno nzale Esapolazone al pmo odne n / e calcolo della deaa Esapolazone al secondo odne n Laboaoo d Calcolo B
Runge-Kua d odne quao Esse un meodo d Runge-Kua esao al qua odne del quale poamo solo la sequenza d calcolo ma che è sempe conenene usae: x( 4 f f f f( 6 Laboaoo d Calcolo B ( 0 6 4 O( 5
Il calcolo della aeoa Il poblema che dobbamo solee é: x ( F N m ( x ( K x ( x ( K x ( che come abbamo so a sco nella foma: x ( ( ( f ( ( K ( x ( K x ( N Se abbamo N cop (...N e solamo l poblema n e dmenson s aa d un ssema d xxn equazon del pmo odne. Dobbamo osseae che la quas oalà dell nedpendenza a le equazon del ssema sede nel emne d foza: la componene j-ma della foza che agsce sul puno è funzone d ue le componen delle poszon e delle elocà d u gl N cop. N N Laboaoo d Calcolo B
Laboaoo d Calcolo B 4 Soluzone del ssema Soluzone del ssema Vso che samo capac d solee una sngola equazone dffeenzale la soluzone d un ssema d mole equazon non pesena pacola poblem. D fao l meodo che usamo è gdamene sequenzale pe cu s dee solo fae aenzone ad esegue ogn passo del calcolo su ue le equazon pma d passae al passo successo. Poamo con l meodo d Runge-Kua d odne due. ( (0 ( ( (0 ( (0 (0 (0 (00 (0 (0 (0 ( (0 O w O x x x w f w w x x f w N N K K K K
Manpolazone de eo Il pogamma dee manpolae eo d DxN componen; sa D che N possono aae pe cu è necessao allocae dnamcamene. C sono due soluzon possbl: Soluzone : mace [N][D] Allocazone double **ec; n n; ec new double*[n]; fo (n0; n<n; n { ec[n] new double[d]; Loop n nd; fo (n0; n<n; n { fo (d0; d<d; d { ec[n] [d]... Laboaoo d Calcolo B 5
Manpolazone de eo Soluzone : mace [N][D] ec[0] ec[] ec[] ec[]... ec[0][0] ec[0][] ec[0][] ec[][0] ec[][] ec[][] ec[][0] ec[][] ec[][] Componen x yz del copo Componen x yz del copo Componen x yz del copo Laboaoo d Calcolo B 6
Schema a blocch compleo Sa IN: OUT: Inpu de da Nome del fle NDTmn Tmax x (Tmn (Tmnm Tmn IN: OUT: Dnamca d N D x ( ( componene d dell acceleazone del copo -mo Gafco de pun Cnemaca Enega IN: OUT: ND x ( ( gafco IN: N D x ( ( funzone Dnamca OUT: x ( ( IN: OUT: N D x ( ( > Tmax? End Laboaoo d Calcolo B 7
Suggemen: : npu Qu non c sono pacola dffcolà. La funzone dee: Leggee N e D Fabbcae (con allocazone dnamca eo che seono e che eosmlmene saanno aabl global (x m w Leggee alo nzal d x e e le masse m Sccome non c sono noà mpoan l consglo è d scee una funcon che fabbch eo e mea de alo nzal pacola e po scee la leua da fle alla fne. Laboaoo d Calcolo B 8
Suggemen: cnemaca La funzone dee esegue uno sep con l meodo d Runge-Kua d odne quao ulzzando una funzone esena pe l calcolo della foza. A fanco oae un esempo del calcolo de pm due pass del meodo d odne due. Alla fne delle opeazon l eoe x che all nzo conene x( dee conenee x(d e analogamene pe. Se mplemenae l conollo dell enega oale conene peò lascae l sulao n xmp e mp ed esegue la copa nella eoune d conollo. In queso modo se necessao poee fae un passo d cnemaca con un d deso se necessao. // Passo fo (0; <N; { fo (d0; d<d; d { [][d] d*[][d]; w[][d] accel(dx; // Passo fo (0; <N; { fo (d0; d<d; d { mp[][d] [][d]w[][d]/; xmp[][d] x[][d][][d]/; [][d] d*mp[][d]; w[][d] Laboaoo d Calcolo B 9
Suggemen: dnamca Suggemen: dnamca La funzone dee calcolae la componene d-ma della foza agene sulla pacella -ma. In un poblema a N cop quesa foza è la somma delle neazon con gl N- cop pù un eenuale conbuo d un campo eseno. Coneà qund ceae funzon esplce pe le neazon e pe l campo eseno che andanno po modfcae d ola n ola a seconda del poblema specfco. D seguo oae una acca della scomposzone n funzon // Defnzon double accel(n n d double **x double ** double ; double fine(n n j n d double **x double ** double ; double fex(n n d double **x double ** double ; // Tacca pe accel double accel(n n d double **x double ** double { double fo 0.0; fo (j0; j<n; j { f (! j fo fine(jdx; fo fex(dx; eun fo/mass[]; Laboaoo d Calcolo B 0