250 likes | 426 Views
Fundamentalistai. http://fundamentalistai.vhost.lt/. FMM – 9 kurso studentai : Petras Petraitis, Jonas Jonaitis, Gytis Škėma, Ieva Ievaitė. Užduotis. Formaliai, užduoties, kurią mes patys ir pasirinkome, tekstas skamba taip:
E N D
Fundamentalistai http://fundamentalistai.vhost.lt/ FMM – 9 kursostudentai: Petras Petraitis, Jonas Jonaitis, Gytis Škėma, Ieva Ievaitė
Užduotis Formaliai, užduoties, kurią mes patys ir pasirinkome, tekstas skamba taip: „Paprastųjų pirmos eilės diferencialinių lygčių sprendimas įvairiais metodais: Rungės-Kutos su pastoviu ir adaptyviu žingsniu, Adamso-Bašforto prediktoriaus korektoriaus, ekstrapoliaciniu kintamos eilės metodu. Sprendinių kokybės palyginimas, vizualizacija. Vienas svarbiausių aspektų - sprendinio kokybės ir skaičiavimo laiko balansavimas.“
Užduoties analizė Plačiau pasiaiškinkime, ką būtent reiškia užduotis. Duotas Koši uždavinys PagalKoši teoremą, jeigu yra tolydi taško stačiakampėje aplinkoje irjojetenkinaLipšico sąlygą kintamojo atžvilgiu: tai duotasKoši uždavinys yra gerai sąlygotas ir turi vienintelį sprendinį – integralinę kreivę , einančią per tašką .
Užduoties sprendimo būdai (1) Kartais pavyksta Koši uždavinį išspręsti analiziškai – suintegruoti diferencialinę lygtį. Tam sukurta daug metodų ir metamos didelės mokslininkų pajėgos, tačiau visi pripažįsta, kad dauguma realiuose taikymuose pasirodančių lygčių yra analiziškai neišsprendžiamos, kaip, pavyzdžiui, gana paprastai atrodanti lygtis
Užduoties sprendimo būdai(2) Todėl reikia taikyti skaitinius diferencialinių lygčių sprendimo metodus. Apsiribojame Koši uždavinio sprendimu ir programoje realizuojame šiuos metodus: • Oilerio metodas (RK1) • Vidurio taško metodas (RK2) • Rungės ir Kutos klasikinis metodas (RK4) • Adamso-Bašforto-Moultono daugiažinsnis 4 eilės metodas • Rungės, Kutos ir Felbergo adaptyvaus žingsnio 5(4) eilės metodas (RKF)
Rungės-Kutos metodų klasė Globalioji paklaida yra , kur – metodoeilė, o - integravimo žingsnis. Lokalioji paklaida - . RK metodaivykdo Bučerio lentelėmis nusakomus algoritmus. Skiriasi tik lentelių dydis ir koeficientai jose:
Daugiažingsniai metodai Daugiažingsniai metodai remiasi tuo, kad sprendinio reikšmė taške prognozuojama remiantis ne tik taško sukaupta informacija, bet ir . Jų bendra schema naudoja dvi išraiškas: Prediktorių: Irkorektorių:
Programosreikalavimaitrumpai • Pradiniaiduomenys – Koši uždavinys, įvedamas ekrane arba nuskaitomas iš failo. • Rezultatai – sprendinio reikšmė pasirinktuose taškuose – rodoma ekrane arba išvedama į failą. • Grafinis sprendinio vaizdavimas. • Globaliosios paklaidos įvertinimas, kuomet tikslus sprendinys yra žinomas. • Skirtingų sprendimo metodų palyginimas grafiškai ir lentelėmis.
Proceso modelis Kadangi užduotis yra paprasta ir aiškiai suprantama, o reikalavimų pasikeitimas projekto eigoje netikėtinas, naudojome kaskadinį projektavimo modelį, kiekvieną programos dalį kurdami nuosekliai vieną po kito.
Vartotojo sąsaja Kurdami vartotojo sąsają orientavomės į paprastumą. Žinoma, sistemos vartotojas turi būti susipažinęs su elementaria matematine teorija, įgalinančia jį suprasti uždavinio prasmę, tačiau programa skirta greitam ir paprastam skaičiavimui, per ilgai nevartant vartotojo pagalbos.
Programos langai (1) Pagrindinis darbo langas:
Programos langai (2) Dviejų metodų palyginimo langas:
Programos langai (3) Globaliosios paklaidos vertinimo langas:
Dokumentacija Dokumentaciją galite rasti internetiniame komandos puslapyje: Dokumentacija yra originali. Pateikta išsami vartotojo pagalba, kuria besinaudodamas jis galės be vargo naudotis programa. http://fundamentalistai.vhost.lt/
Testavimas (1) Programos testavimas atliktas pasitelkiant žinomas testavimo proceso pakopas: • Klaidų testavimas • Juodos dėžės testavimas • Struktūrinis testavimas • Integravimo testavimas • Objektinis testavimas
Testavimas(2) Visas testavimo pakopas apjungėme panaudodami test-case scenarijus. Klaidos nustatytos vedant ribines reikšmes (juodosios dėžės metodas), taip pat testuojant su žinomais pradiniais duomenimis. Tokiu būdutikrinome programos išeities duomenis. Suprojektavome Junittest-case bendrinius scenarijus pagrindinėms ir pagalbinėms klasėms, tokiu būdu apjungdami testus, atlikome integravimo testavimą: • PointTableModelTest • TwoMethodTableModelTest • InCodeODETest • InStringODETest • InStringSolutionTest • BaseSolverTest
Testavimas(3) Tokius pačius bendrinius test-case scenarijus sukūrėme ir pradinių duomenų ir objektų įveritinimui. Tai padėjo mums validuoti įvedamus duomenis, kuriamus objektus ir išvesti pranešimus vartotojui jeigu kuriant objektą įvyksta klaida (su paaiškinimu kur įvyko klaida), leidžiant suvesti duomenis iš naujo. • DataTest
Testavimas(4) Atlikę testus pagrindinėms klasėms ir įvedamiems duomenims, sudarėme grafinės aplinkos GUI Test-case scenarijus. Pagal šiuos scenarijus ‚išspaudinėjami‘ programos mygtukai, suvedami duomenys (struktūrinis testavimo metodas), tikrinama ar yra atitinkami įvesties laukai, ar išvedama grafinė informacija ir vartotojui suprantami pranešimai, ar programos veikimas nenutrūksta atlikus tam tikrą vartotojo vedamų veiksmų seką. • MainGUITest
Panaudos atvejis (1) Tarkime, vartotojas Algirdas nori išspręsti Koši uždavinį Intervale. Vartotojas neturi pinigų, todėl negali pirkti galingų diferencialinių lygčių sprendimą palaikančių programų kaip Maple ar Mathematica, taigi jis susiranda nemokamą „Fundamentalistų“ sukurtą ODEsolver. Atidžiai perskaitęs vartotojo pagalbą, Algirdas jaučiasi pasiruošęs kibti į darbą.
Panaudos atvejis (2) Jis, atsidaręs programą, įrašo diferencialinės lygties išraišką, pradinę sąlygą ir sprendimo intervalą. Algirdas pasirenka sprendimą RK4 metodu, ir ima žingsnių skaičių . Jisapskaičiuoja, kad tada metodo paklaida bus ir tai jį tenkina.
Panaudos atvejis (3) Kad įvestų Koši uždavinį ir jo parametrus į programą, Algirdas spaudžia „Įvesti“ ir pamato pranešimą Algirdas nori gauti rezultatus visomis įmanomomis formomis, todėl pasirenka išvedimą į ekraną, failą ir grafinį duomenų atvaizdavimą.
Panaudos atvejis (4) Kadangi Algirdas pasirinko išvedimą į failą, programa paprašo jo nurodyti, į kokį failą bus išvedama. Jeigu nurodomas ne pilnas kelias iki failo, jis sukuriamas tame kataloge, kuriame yra programa. Po to Algirdas pamato pranešimą, ar sėkmingai pavyko įrašymas į nurodytą failą:
Panaudos atvejis (5) Tuomet Algirdas gauna dar du išvedinius. Pirmasis yra skaitinis sprendinio atvaizdavimas JTable tipo lentele:
Panaudos atvejis (6) Antrasis – grafinis sprendinio atvaizdavimas. Realizacija programoje – naudojantis biblioteka JFreeChart.