FIZ 313 KOMPIUTERINĖ FIZIKA. Laboratorinis darbas FIZIKOS DIFERENCIALINIŲ LYGČIŲ SPRENDIMAS RUNGĖS KUTOS METODU

Σχετικά έγγραφα
Matematika 1 4 dalis

I.4. Laisvasis kūnų kritimas

I dalis KLAUSIMŲ SU PASIRENKAMUOJU ATSAKYMU TEISINGI ATSAKYMAI

1.4. Rungės ir Kuto metodas

Elektronų ir skylučių statistika puslaidininkiuose

Ketvirtos eilės Rungės ir Kutos metodo būsenos parametro vektoriaus {X} reikšmės užrašomos taip:

X galioja nelygyb f ( x1) f ( x2)

Dviejų kintamųjų funkcijos dalinės išvestinės

Temos. Intervalinės statistinės eilutės sudarymas. Santykinių dažnių histogramos brėžimas. Imties skaitinių charakteristikų skaičiavimas

1. Individualios užduotys:

Vilniaus universitetas. Edmundas Gaigalas A L G E B R O S UŽDUOTYS IR REKOMENDACIJOS

Laboratorinis darbas Nr. 2

Specialieji analizės skyriai

MECHANINIS DARBAS, GALIA, ENERGIJA. TVERMĖS DĖSNIAI MECHANIKOJE. HIDRODINAMIKA

Arenijaus (Arrhenius) teorija

Taikomieji optimizavimo metodai

0.1. Bendrosios sąvokos

PNEUMATIKA - vožtuvai

2015 M. MATEMATIKOS VALSTYBINIO BRANDOS EGZAMINO UŽDUOTIES VERTINIMO INSTRUKCIJA Pagrindinė sesija. I dalis

LIETUVOS ŽEMĖS ŪKIO UNIVERSITETAS Vandens ūkio ir žemėtvarkos fakultetas Fizikos katedra. Juozas Navickas FIZIKA. I dalis MOKOMOJI KNYGA

2009 m. matematikos valstybinio brandos egzamino VERTINIMO INSTRUKCIJA Pagrindinė sesija 1 6 uždavinių atsakymai

Matematinis modeliavimas

Papildomo ugdymo mokykla Fizikos olimpas. Mechanika Dinamika 1. (Paskaitų konspektas) 2009 m. sausio d. Prof.

III.Termodinamikos pagrindai

Įžanginių paskaitų medžiaga iš knygos

2.5. KLASIKINĖS TOLYDŽIŲ FUNKCIJŲ TEOREMOS

Paprastosios DIFERENCIALINĖS LYGTYS

EKONOMETRIJA 1 (Regresinė analizė)

EUROPOS CENTRINIS BANKAS

Paprastosios DIFERENCIALINĖS LYGTYS

Statistinė termodinamika. Boltzmann o pasiskirstymas

Su pertrūkiais dirbančių elektrinių skverbtis ir integracijos į Lietuvos elektros energetikos sistemą problemos

Analizės uždavinynas. Vytautas Kazakevičius m. lapkričio 1 d.

MATEMATINĖ LOGIKA. Įžanginių paskaitų medžiaga iš knygos

DISPERSINĖ, FAKTORINĖ IR REGRESINĖ ANALIZĖ Laboratorinis darbas Nr. 2

DISPERSINĖ, FAKTORINĖ IR REGRESINĖ ANALIZĖ Laboratorinis darbas Nr. 1

KURKIME ATEITĮ DRAUGE! BIO 312. MIKROBIOLOGIJA. Laboratorinis darbas

Spalvos. Šviesa. Šviesos savybės. Grafika ir vizualizavimas. Spalvos. Grafika ir vizualizavimas, VDU, Spalvos 1

Τμήμα Φυσικής Πανεπιστημίου Κύπρου Εαρινό Εξάμηνο 2015/2016. ΦΥΣ145 Υπολογιστικές Μέθοδοι στην Φυσική

διακριτοποίηση αριθµητική παραγώγιση

Ekonometrija. Trendas ir sezoninė laiko eilutės komponentė

AIBĖS, FUNKCIJOS, LYGTYS

Lina Ragelienė, Donatas Mickevičius. Fizikin chemija. Praktiniai darbai

06 Geometrin e optika 1

0.1. Bendrosios sąvokos

2008 m. matematikos valstybinio brandos egzamino VERTINIMO INSTRUKCIJA Pagrindinė sesija

Paprastosios DIFERENCIALINĖS LYGTYS

Kompiuterinė lazerių fizika. Viktorija Pyragaitė

FUNKCIJOS. veiksmu šioje erdvėje apibrėžkime dar viena. a = {a 1,..., a n } ir b = {b 1,... b n } skaliarine sandauga

II dalis Teisingas atsakymas į kiekvieną II dalies klausimą vertinamas 1 tašku g/mol

IV. FUNKCIJOS RIBA. atvira. intervala. Apibrėžimas Sakysime, kad skaičius b yra funkcijos y = f(x) riba taške x 0, jei bet kokiam,

Atsitiktinių paklaidų įvertinimas

Skalbimo mašina Vartotojo vadovas Πλυντήριο Ρούχων Εγχειρίδιο Χρήστη Mosógép Használati útmutató Automatická pračka Používateľská príručka

1 teorinė eksperimento užduotis

1 Tada teigini Ne visi šie vaikinai yra studentai galima išreikšti formule. 2 Ta pati teigini galima užrašyti ir taip. 3 Formulė U&B C reiškia, kad

VILNIAUS UNIVERSITETAS MATEMATIKOS IR INFORMATIKOS FAKULTETAS PROGRAMŲ SISTEMŲ KATEDRA. Algoritmų teorija. Paskaitų konspektas

A priedas. Diagnostikoje naudojami tarptautiniai ISO standartai

Fizika. doc. dr. Vytautas Stankus. Fizikos katedra Matematikos ir gamtos mokslų fakultetas Kauno Technologijos Universitetas

STOGO ŠILUMINIŲ VARŽŲ IR ŠILUMOS PERDAVIMO KOEFICIENTO SKAIČIAVIMAS

Skysčiai ir kietos medžiagos

Diskrečioji matematika

ηµιουργία νέου τύπου δεδοµένων από το χρήστη

1 TIES ES IR PLOK TUMOS

Matematinės analizės egzamino klausimai MIF 1 kursas, Bioinformatika, 1 semestras,

Εισαγωγή στον Προγραμματισμό Η/Υ για Χημικούς Μηχανικούς

KRŪVININKŲ JUDRIO PRIKLAUSOMYBĖS NUO ELEKTRINIO LAUKO STIPRIO TYRIMAS

Specialieji analizės skyriai

, t.y. per 41 valandą ir 40 minučių. (3 taškai) v Braižome h = f(t) priklausomybės grafiką.

2 laboratorinis darbas. TIKIMYBINIAI MODELIAI

Dirbtiniai neuroniniai tinklai

ELEMENTARIOJI TEORIJA

Algoritmai. Vytautas Kazakevičius

1 Įvadas Neišspręstos problemos Dalumas Dalyba su liekana Dalumo požymiai... 3

4.1 Skaliarinė sandauga erdvėje R n Tarkime, kad duota vektorinė erdvė R n. Priminsime, kad šios erdvės elementai yra vektoriai vektoriu

Matematinės analizės konspektai

LIETUVOS RESPUBLIKOS ÐVIETIMO IR MOKSLO MINISTERIJA NACIONALINIS EGZAMINØ CENTRAS 2014 METŲ MATEMATIKOS VALSTYBINIO BRANDOS EGZAMINO REZULTATŲ

Balniniai vožtuvai (PN 16) VRG 2 dviejų eigų vožtuvas, išorinis sriegis VRG 3 trijų eigų vožtuvas, išorinis sriegis

V skyrius ĮVAIRŪS PALŪKANŲ APSKAIČIAVIMO KLAUSIMAI

ATSITIKTINIAI PROCESAI. Alfredas Račkauskas. (paskaitų konspektas 2014[1] )

Matematinė logika. 1 skyrius Propozicinės formulės. žodį, Graikiškas žodis logos (λóγoς) reiškia

Vilius Stakėnas. Kodavimo teorija. Paskaitu. kursas

VIII. FRAKTALINĖ DIMENSIJA. 8.1 Fraktalinės dimensijos samprata. Ar baigtinis Norvegijos sienos ilgis?

Našios kompiuterių sistemos

TERMODINAMIKA. 1. Pagrindinės sąvokos ir apibrėžimai

Matavimo vienetų perskaičiavimo lentelės

Pav1 Žingsnio perdavimo funkcija gali būti paskaičiuota integruojant VIPF. Paskaičiavus VIPF FFT gaunamo amplitudinė_dažninė ch_ka.

Remigijus Leipus. Ekonometrija II. remis

Statistinis ir termodinaminis tyrimo metodai

FDMGEO4: Antros eilės kreivės I

Παράδειγµα #11 ΠΡΟΒΛΗΜΑΤΑ ΑΡΧΙΚΩΝ ΤΙΜΩΝ Σ Ε ΕΠΙΜΕΛΕΙΑ: Ν. Βασιλειάδης

Επιμέλεια απαντήσεων: Ιωάννης Λυχναρόπουλος

Taikomoji branduolio fizika

4.3. Minimalaus dengiančio medžio radimas

KURKIME ATEITĮ DRAUGE! FIZ 414 APLINKOS FIZIKA. Laboratorinis darbas SAULĖS ELEMENTO TYRIMAS

Šotkio diodo voltamperinės charakteristikos tyrimas

04 Elektromagnetinės bangos

Palmira Pečiuliauskienė. Fizika. Vadovėlis XI XII klasei. Elektra ir magnetizmas KAUNAS

Gairės audito institucijoms dėl audito atrankos metodų ir m. programavimo laikotarpiai

LIETUVOS FIZIKŲ DRAUGIJA ŠIAULIŲ UNIVERSITETO JAUNŲJŲ FIZIKŲ MOKYKLA FOTONAS MECHANIKA

Άσκηση 1. Α. Υπολογίστε χωρίς να εκτελέσετε κώδικα FORTRAN τα παρακάτω: Ποιά είναι η τελική τιμή του Z στα παρακάτω κομμάτια κώδικα FORTRAN:

Transcript:

EUROPOS SĄJUNGA Europos socialinis fondas KURKIME ATEITĮ DRAUGE! 2004-2006 m. Bendrojo programavimo dokumento 2 prioriteto Žmogiškųjų išteklių plėtra 4 priemonė Mokymosi visą gyvenimą sąlygų plėtra Projekto sutarties numeris: ESF/2004/2.4.0-K01-160/SUT-261 Projekto pavadinimas: Inovatyvūs mokymosi metodai ir naujausios technologijos gamtos mokslų bakalaurų rengimui ------------------------------------------------------------------------------------------------------- 1. Darbo tikslas: FIZ 313 KOMPIUTERINĖ FIZIKA Laboratorinis darbas FIZIKOS DIFERENCIALINIŲ LYGČIŲ SPRENDIMAS RUNGĖS KUTOS METODU 1. Išmokti taikyti Oilerio bei Rungės Kuto metodus fizikos diferencialinių lygčių sprendimui. 2. Darbo užduotнs: 1. Rasti parašiutininko leidimosi greičio priklausomybę nuo laiko Oilerio ir Rungės Kuto metodais. 2. Nustatyti trumpiausią saugaus parašiutininko nusileidimo trukmę. 3. Bendroji teorija Oilerio metodas Nagrinėdami realius mus supančius reiškinius dažnai norime juos ne tik suprasti kokybiškai, bet ir išsiaiškinti kiekybinius dėsningumus gauti tam tikrų dydžių skaitines vertes. Tam neretai kokybinio modelio nepakanka dar reikia sugalvoti, kokiu būdu analitines lygtis paversti skaitinio išvedimo rezultatais. Statiniais (pusiausvyriniais) atvejais tai paprasta. Pavyzdžiui, į dujų būsenos lygtį įstatę dominančius skaičius suskaičiuojame atsakymą, ir kompiuterio šiam darbui net nereikia, nebent norėtume gauti didelę skaičių lentelę. Šiuo atveju nereikia ir programuoti, pakanka pasinaudoti kokia nors populiaria skaičiuokle.

Visai kitokia situacija yra su realiomis situacijomis, kai fizikiniai (mechaniniai, elektriniai ar net biologiniai) dydžiai keičiasi proceso eigoje. Tada šių dydžių priklausomybes galima atvaizduoti diferencialinių lygčių pagalba. Palyginti nedaug diferencialinių lygčių galima išspręsti analiziškai, realioms situacijoms reikia taikyti skaitinius metodus. Pats paprasčiausias metodas yra Oilerio metodas. Oilerio metodui išsiaiškinti pasinaudosime ore krentančio kūno judėjimo tyrimu. Tarkime, parašiutininkas iššoka iš lėktuvo ir 24 sekundes neišskleidžia parašiuto. Reikia rasti parašiutininko greičio priklausomybę nuo laiko. Parašiutininko skrydį apsprendžia dvi jėgos: gravitacija ir oro pasipriešinimas. Iš pradžių tarsime, kad oro pasipriešinimas yra proporcingas greičio kvadratui βv 2. Antrasis Niutono dėsnis atrodo taip: mdv /dt = mg - βv 2 (1) kur m yra parašiutininko masė, g laisvojo kritimo pagreitis, v jo greitis. Padalinę iš m gauname: dv /dt = g - kv 2, (2) kur k = β/m. Koeficientas k priklauso nuo įvairių sunkiai apibrėžiamų parametrų, pavyzdžiui, judančio kūno formos, todėl jį paprasčiau nustatyti eksperimentiškai. Po kurio laiko krintančio kūno greitis pasiekia maksimalią vertę, t.y., dv = 0. Šiuo atveju diferencialinę lygtį galima išspręsti analitiškai v g t =, (3) k () vt 2akt ( e ) ac = C+ e 2akt, (4) kur koeficientai lygūs a = v t ir C = [a + v(0) ]/ [a - v(0) ]. Sprendžiant lygtį Oilerio metodu skaitiškai remiamasi tokia idėja. Tam tikru momentu greičio pokytį v per t apsprendžia jėga (g kv 2 ). Kuo didesnis t, tuo ilgiau veikia ši jėga, tuo didesnis bus pokytis: v = (g - kv 2 ) t, (5) kur v = v(t + t) v(t). Reikia neužmiršti, kad krintančio kūno greitis v keičiasi, todėl narys kv 2 yra nepastovus. Tai reiškia, kad greičio pokytis v įvairiais laiko momentais yra skirtingas, todėl jeigu t bus didelis. Tačiau jei imsime labai mažą t, tai galima daryti prielaidą, kad greitis per tokį mažą laiką

pasikeičia nežymiai, todėl galima teigti, kad greičio pokytis proporcingas laiko padidėjimui t ir kūną veikiančiai jėgai, t.y., g - kv 2. t paprastai vadinamas žingsniu: h = dt. Tada skaitiniam sprendimui paruošta lygtis atrodo taip: v(t+h) = v(t) + h(g - kv 2 (t)), (6) t.y. kūno greitis laiko momentu t + h yra lygus greičiui laiko momentu t plius priedas h(g - kv 2 (t)), kurį sąlygoja kūną veikiančios jėgos. Jeigu kūnas juda laiką T, o žingsnio trukmė h, tai greitį skaičiuosime n kartų, kur T/h = n. Perrašius (6) lygtį į rekurentinę formą, gauname v i+1 = v i + h(g - kv 2 i ), (7) kur kiekvieno žingsnio i laiko momentą t galime rasti naudodami sąryšį t = h i. Oilerio metodo matematika. Kad pateiktas metodas būtų lengviau suprantamas, Oilerio metodą trumpai užrašysime matematikoje įprasta simbolika. Tarkime, kad skaitiškai tiriame funkciją y(x). Bendru atveju funkcijos prieaugis, kai x = h, lygus f(x, y), t.y., ( x + h) y( x) y h Tada funkcijos reikšmė = f ( x, y) (8) ( ) y = y + n+ 1 n hf xn, yn (9) kur y n atitinka y(x n ); x n = x = nh, o y 0 = y(0). 4-os eilės Runge-Kutto metodas Oilerio metodas (OM) tinka tada, kai ieškoma funkcija kinta lėtai. Tiriant realius fizikinius procesus dažnai tokai sąlyga neišpildoma. Įvairaus pobūdžio fizikos diferencialinių lygčių sprendimų teorija gana stipriai išvystyta, sukurti skaitinio integravimo algoritmai, todėl fizikui dažnai nereikia gilintis į matematinius subtilumus. Fortrano kalbai pritaikytose bibliotekose, tame tarpe ir MSIMSL, yra ne viena paprogramė, kurią galima lanksčiai pritaikyti konkretaus uždavinio sprendimui. Beveik visi šie algoritmai pagrįsti Runge-Kutta metodu. Nesigilindami į matematinį šio algoritmo pagrįstumą ir tikslumą, išsiaiškinsime ketvirtos eilės Runge-Kutta (RK) metodą, kurio turėtų pakakti praktiškai visiems atvejams, su kurias susiduria fizikai. Tarkime, kad DL, kurią reikia spręsti, yra dy / dx = f(x, y) (10) kai duota pradinė sąlyga y(0). Kito žingsnio funkcijos reikšmė y(x+h) surandama pagal formulę: y* = y + (k 1 + 2k 2 + 2k 3 + k 4 )/6 (11) kur koeficientai k i lygūs:

k 1 = hf(x, y) k 2 = hf(x+0.5h, y+0.5k 1 ) k 3 = hf(x+0.5h, y+0.5k 2 ) (12) k 4 = hf(x+h, y+k 3 ) 4. Tyrimo metodika Aprašytam Oilerio metodui išbandyti naudokite su paruoštą programa, kuri pateikiama priede. Šį programa skaitiniu būdu sprendžia parašiutininko leidimosi uždavinį analiziniu atveju, tai yra, kai oro pasipriešinimo koeficientas yra 2, ~βv 2. Šioje programoje integruotas ir analizinio sprendinio skaičiavimas, ir skaitinis įvertinimas naudojant Oilerio metodą. Oilerio metodo tikslumas priklauso nuo pasirinkto žingsnio, todėl ištirkite, kaip skaičiavimo rezultatai priklauso nuo žingsnio h vertės. Lygindami su analiziniu atsakymu, mažinkite žingsnį tol, kol tikslumas bus pakankamas. Modeliavimo metu reikia atsižvelgti į tai, kad tam tikru momentu išskleidžiamas parašiutas. Skaitiniame uždavinio sprendime tai atsispindi oro pasipriešinimo koeficiento pasikeitime; pilnai išskleidus parašiutą jis lygus maždaug k ~ 0,3. Pakeiskite programą taip, kad joje būtų galima tam tikru momentu išskleisti parašiutą. Išnagrinėkite parašiutininko kritimo greičio priklausomybę laike, kai jis iš pradžių krenta laisvai, o po to išskleidžia parašiutą. Nustatykite stacionarų laisvo kritimo greitį su parašiutu ir be parašiuto. Įvertinkite, per kokį trumpiausią laiką parašiutininkas gali saugiai nusileisti ant žemės, jei jis iššoka iš lėktuvo, skrendančiame 1000 m aukštyje. Suraskite maksimalią laisvo kritimo (be parašiuto) trukmę iki to momento, kad parašiutą išskleidus, parašiutininko greitis suspėtų sumažėti. Reali oro pasipriešinimo priklausomybė nuo greičio yra artima ~kv 1,8. Šis atvejis jau neišsprendžiamas analiziškai, tačiau parašyta programą lygiai taip pat galima naudoti ir šiam atvejui. Patikrinkite, kaip pasikeičia v(t), kai oro pasipriešinimas ~kv 1,8 ir kai ~kv 2. Gautas priklausomybes nubraižykite. Programos su parašiutininko antroji versija padaryta naudojant 4-os eilės Runge-Kutta metodą. Išsiaiškinkite ją ir palyginkite, rezultatų tikslumą esant tam pačiam žingsniui h Oilerio metodu ir RK metodu. 5. Tyrimo eiga 1. Laboratorinis darbas atliekamas kompiuterių klasėje. 2. Ištirkite parašiutininko nusileidimo greičio priklausomybę nuo laiko naudodami Oilerio metodą. Nubraižykite analizinio sprendinio kreivę bei Oilerio metodo kreives, gautas esant skirtingiems žingsniams. Paaiškinkite rezultatų netikslumų priežastis. 3. Papildykite programą taip, kad ji skaičiuotų parašiutininko greičio priklausomybę išskleidus parašiutą. Ištirkite parašiutininko kritimo greičio priklausomybę laike, kai jis iš pradžių krenta

laisvai, o po to išskleidžia parašiutą. Nustatykite stacionarų laisvo kritimo greitį su parašiutu ir be parašiuto. Pavaizduokite gautas priklausomybes grafiškai bei trumpai paaiškinkite gautus rezultatus. 4. Papildykite programą taip, kad ji skaičiuotų parašiutininko aukštį virš žemės paviršiaus. 5. Įvertinkite, per kokį trumpiausią laiką parašiutininkas gali saugiai nusileisti ant žemės, jei jis iššoka iš lėktuvo, skrendančiame 1000 m aukštyje. Suraskite maksimalią laisvo kritimo (be parašiuto) trukmę iki to momento, kad parašiutą išskleidus, parašiutininko greitis suspėtų sumažėti. 6. Nubraižykite parašiutininko aukščio virš žemės paviršiaus ir greičio priklausomybes nuo laiko ir paaiškinkite gautus rezultatus. 7. Papildykite programą taip, kad ji spręstų 5 užduotį Rungės kuto metodu ir leistų palyginti Oilerio ir Rungės Kuto metodo tikslumą. Nubraižykite parašiutininko, iššokusio iš lėktuvo parašiuto, greičio priklausomybes nuo laiko abiem metodais, esant skirtingam žingsniui. 8. Atliktą darbą pateikti parašytą tekstiniu redaktoriumi. Atsiskaitymo dokumente turi būti užduoties sąlyga bei atsakymai į 2, 3, 5, 6, 7 tyrimo eigos klausimus. Visi rezultatai turi turėti aiškiai apibrėžtą išvadą bei trumpą paaiškinimą. 6. Kontroliniai kiausimai 1. Parašiutininko kritimo užduoties formulavimas, analizinio ir skaitinio sprendimo metodai. 2. Oilerio ir Rungės Kuto metodai diferencialinių lygčių sprendimui. 3. Fizikinių procesų, aprašomų pirmos eilės diferencialinėmis lygtimis su pastoviais koeficientais, pavyzdžiai. 4. Mokėti atsakyti į visus klausimus, susijusius su naudotos programos programavimo technika. 7. Literatūra 1. A. Kanapickas. Paskaitų konspektas. 4 skyrius: vidinės funkcijos. 2. Tamašauskas A., Vosylius J. Fizika, T. 1. - Vilnius: Mokslas, 1989. 195 p. 3. Fortran for scientists and engineers. Chapter 16.1: introduction to numerical methods equations.

Priedas Nr. 1. Užduoties sprendimo pavyzdys Oilerio metodu. PROGRAM Para IMPLICIT NONE REAL, PARAMETER :: g = 9.8 REAL K! Pasipriesinimo koeficientas REAL H! zingsnis dt REAL T! laikas REAL T0! Pradinis laikas REAL Tend! Galutinis laikas REAL V! greitis REAL V0! pradinis greitis! REAL X! INTEGER I, N 10 FORMAT( 1x, A ) WRITE( *, 10, ADVANCE = 'NO' ) 'Iveskite pasipriesinimo koeficienta' WRITE( *, 10, ADVANCE = 'NO' ) '(~ 0.004 zmogui, 0.3 parasiutui): ' READ*, K WRITE( *, 10, ADVANCE = 'NO' ) 'zingsni ( <= 1): ' READ*, H WRITE( *, 10, ADVANCE = 'NO' ) 'Pradini laika (~0): ' READ*, T0 WRITE( *, 10, ADVANCE = 'NO' ) 'Pradini greiti: ' READ*, V0 WRITE( *, 10, ADVANCE = 'NO' ) 'Galutini laika: ' READ*, Tend N = INT((Tend - T0) / H) + 1 T = T0 V = V0 PRINT "(3A10)", "Time", "Euler", "Exact" DO I = 1, N PRINT "(3F10.2)", T, V, Vexact(T, V0, G, K) V = V + H * (g - K * V * V) T = T + H END DO CONTAINS FUNCTION Vexact(T, V0, G, K) REAL Vexact REAL, INTENT(IN) :: g, K, T, V0 REAL A, C A = SQRT( g / K ) C = (A + V0) / (A - V0) Vexact = A * (C - EXP(-2*A*K*T))/(C + EXP(-2*A*K*T)) END FUNCTION Vexact END PROGRAM Para

Priedas Nr. 2. Paprogramės greičio skaičiavimui analziniu, Oilerio ir Rungės Kuto metodais FUNCTION Vexact(T, V0, G, K) REAL Vexact REAL, INTENT(IN) :: g, K, T, V0 REAL A, C A = SQRT( g / K ) C = (A + V0) / (A - V0) Vexact = A * (C - EXP(-2*A*K*T))/(C + EXP(-2*A*K*T)) END FUNCTION Vexact FUNCTION dcrunge(conc, K, dt) REAL Vrunge REAL, INTENT(IN) :: g, K, V, dt REAL k1, k2, k3, k4! k1 = h * f(x, y)! k2 = h * f(x + 0.5*h, y + 0.5*k1)! k3 = h * f(x + 0.5*h, y + 0.5*k2)! k4 = h * f(x + h, y + k3) k1 = dt * (g - K * V * V) k2 = dt * (g - K * (V + 0.5 * k1) * (V + 0.5 * k1)) k3 = dt * (g - K * (V + 0.5 * k2) * (V + 0.5 * k2)) k4 = dt * (g - K * (V + k3) * (V + k3)) Vrunge = V + (k1 + 2 * k2 + 2 * k3 + k4)/6 END FUNCTION Vrunge