Procesul de modelare matematică

O particularitate distinctivă a modelelor matematice create astăzi este complexitatea lor, care derivă din complexitatea obiectelor modelate. Acest lucru conduce la modele tot mai elaborate și la necesitatea de a apela simultan la mai multe teorii din domenii diferite de cunoaștere, precum și de a folosi metode computaționale moderne și tehnologie de calcul pentru obținerea și analiza rezultatelor simulării. În cazul obiectelor complexe, de obicei este imposibil să se satisfacă toate cerințele printr-un singur model. În schimb, trebuie creat un întreg spectru de modele ale aceluiași obiect (în unele cazuri, un set hierarhic de modele „imbricate”), fiecare fiind cel mai potrivit pentru rezolvarea sarcinilor particulare care îi sunt atribuite.

Necesitatea construirii de modele la scară largă impune dezvoltarea unui set de reguli și abordări care ar reduce costul dezvoltării modelului și ar diminua probabilitatea unor erori dificil de eliminat mai târziu. Un astfel de set de reguli poate fi numit o tehnologie de creare a modelelor matematice.

Procesul de construire a oricărui model matematic poate fi reprezentat ca o succesiune de etape:

  1. Studierea obiectului care trebuie modelat și pregătirea caietului de sarcini pentru dezvoltarea modelului (formularea substanțială a problemei);
  2. Formularea conceptuală și matematică a problemei;
  3. Analiza calitativă și verificarea corectitudinii modelului;
  4. Selectarea și justificarea metodelor de rezolvare;
  5. Obținerea soluției;
  6. Elaborarea algoritmului de soluție și studierea proprietăților sale; implementarea algoritmului sub formă de software;
  7. Validarea modelului;
  8. Aplicarea practică a modelului construit.

Modelele matematice — mai ales cele care folosesc metode numerice și tehnologie de calcul — necesită resurse intelectuale, financiare și de timp semnificative pentru construirea lor. Prin urmare, decizia de a dezvolta un model nou se ia doar atunci când nu există modalități mai simple de a rezolva problemele aflate în discuție (de exemplu, prin modificarea unui model existent).

Necesitatea unui model nou poate apărea în legătură cu cercetarea științifică, în special la intersecția diferitelor domenii de cunoaștere. Odată luată decizia de a construi un model matematic nou, partea beneficiară caută o echipă care să efectueze lucrarea. De regulă, echipa de proiect include specialiști de diverse profiluri: matematicieni aplicați, experți de domeniu care cunosc temeinic obiectul modelat și dezvoltatori de software. Odată confirmată decizia de creare a modelului și formată echipa de proiect, începe etapa de studiu. Obiectivul principal al acestei etape este pregătirea formulării substanțiale a problemei de modelare. Formularea substanțială a problemei este o listă a întrebărilor esențiale despre obiectul de modelare, exprimate în limbaj simplu, la care partea beneficiară dorește să obțină răspuns.

Pregătirea listei de întrebări la care noul model trebuie să răspundă constituie ea însăși, de multe ori, o problemă, care necesită specialiști cu cunoștințe și abilități specifice. Aceștia trebuie nu doar să înțeleagă temeinic domeniul de aplicare al eforturilor de modelare și să fie conștienți de capacitățile matematicii computaționale moderne și ale tehnologiei de calcul, ci și să fie capabili să comunice cu oamenii — să extragă informația de la experții practicieni care au o „intuiție” privind obiectul de modelare și nuanțele comportamentului acestuia. Astfel de specialiști includ, de exemplu, analiștii de sisteme, inginerii de sisteme și cercetătorii operaționali.

Pe baza analizei întregii informații adunate, formulatorul problemei trebuie să definească cerințele pentru viitorul model astfel încât, pe de o parte, să satisfacă partea beneficiară și, pe de altă parte, să permită implementarea modelului în intervalul de timp și bugetul date. Analiștii de sisteme (sau cercetătorii operaționali) trebuie să aibă capacitatea de a extrage, dintr-un volum mare de informații slab structurate și eterogene despre obiectul de modelare și din diversele dorințe și cerințe vag exprimate ale părții beneficiare, esența care poate fi efectiv implementată.

Pe baza informațiilor adunate despre obiectul de modelare, analistul de sisteme (inginerul, cercetătorul operațional), împreună cu partea beneficiară, formulează declarația substanțială a problemei, care, de regulă, nu este definitivă și poate fi rafinată și dezvoltată în cursul elaborării modelului. Cu toate acestea, toate ajustările și modificările ulterioare aduse formulării substanțiale trebuie să fie de natură minoră, nefundamentală.

Tot materialul adunat în timpul studiului — cunoștințele acumulate despre obiect, formularea substanțială a problemei, cerințele suplimentare pentru implementarea modelului și prezentarea rezultatelor — este documentat sub forma unui caiet de sarcini pentru proiectarea și dezvoltarea modelului. Caietul de sarcini constituie documentul final al etapei de studiu. Cu cât informația adunată despre obiect în timpul studiului este mai completă, cu atât problema substanțială poate fi formulată mai clar, cu atât experiența și cunoștințele acumulate pot fi luate în considerare mai deplin și cu atât mai multe dificultăți din etapele ulterioare ale dezvoltării modelului pot fi evitate.

Spre diferență de formularea substanțială, formularea conceptuală a problemei de modelare este de regulă pregătită de membrii echipei de proiect fără implicarea reprezentanților părții beneficiare, pe baza caietului de sarcini elaborat în etapa anterioară și folosind cunoștințele disponibile despre obiectul de modelare și cerințele pentru viitorul model. Analiza și discutarea în comun a tuturor informațiilor disponibile despre obiectul de modelare de către membrii echipei permit formarea unui model conceptual al obiectului — o sinteză a modelelor cognitive dezvoltate de fiecare membru al echipei.

Formularea conceptuală a problemei de modelare este o listă a întrebărilor esențiale de interes pentru partea beneficiară, exprimate în termenii disciplinelor specifice, împreună cu un set de hipoteze privind proprietățile și comportamentul obiectului de modelare.

Cele mai mari dificultăți în formularea declarației conceptuale apar la modelele situate la intersecția diferitelor discipline. Diferențele de tradiții, concepte și limbaje folosite pentru a descrie aceleași obiecte constituie obstacole foarte serioase în crearea modelelor interdisciplinare.

O formulare conceptuală completă permite obținerea formulării matematice a problemei de modelare, care include un set de relații matematice care descriu comportamentul și proprietățile obiectului de modelare.

Formularea matematică a problemei de modelare este setul de relații matematice care descriu comportamentul și proprietățile obiectului de modelare.

Un model matematic este considerat corect dacă toate verificările de validare au fost efectuate cu rezultate pozitive: analiza dimensională, verificarea ordinului de mărime, verificarea naturii dependențelor, analiza cazurilor extreme, condițiile la limită, sensul fizic și închiderea matematică. Formularea matematică este chiar mai abstractă decât cea conceptuală, întrucât ea reduce problema inițială la o problemă pur matematică pentru care există metode de rezolvare bine dezvoltate.

Toate metodele de rezolvare a problemelor care constituie „nucleul” modelelor matematice pot fi împărțite în analitice și algoritmice (numerice).

Trebuie observat că, atunci când soluțiile analitice sunt folosite pentru obținerea rezultatelor numerice, este de asemenea frecvent necesară elaborarea algoritmilor corespunzători implementați pe calculator.

Cu toate acestea, soluția inițială în acest caz are forma unei expresii analitice (sau a unui set de expresii). Soluțiile bazate pe metode algoritmice, în schimb, sunt fundamental ireductibile la soluții analitice exacte ale problemei respective.

Alegerea unei metode de cercetare anume depinde în mare măsură de calificarea și experiența membrilor echipei de proiect. Metodele analitice sunt mai convenabile pentru analiza ulterioară a rezultatelor, dar sunt aplicabile doar modelelor relativ simple. Dacă problema matematică (chiar și într-o formulare simplificată) admite o soluție analitică, aceasta este fără îndoială preferabilă unei soluții numerice.

Metodele algoritmice reduc problema la un algoritm care efectuează un experiment computațional folosind tehnologia de calcul. Precizia modelării în cadrul acestui experiment depinde în mod critic de metoda aleasă și de parametrii ei. Metodele algoritmice sunt, în general, mai laborioase de implementat și necesită ca membrii echipei de proiect să aibă cunoștințe solide de matematică computațională, o bibliotecă extinsă de software specializat și resurse de calcul puternice.

Metodele numerice sunt aplicabile doar problemelor matematice bine puse, ceea ce limitează semnificativ utilizarea lor în modelarea matematică. Comun tuturor metodelor numerice este reducerea problemei matematice la o problemă cu dimensiune finită. Acest lucru este realizat cel mai frecvent prin discretizarea problemei inițiale — adică prin înlocuirea funcțiilor de argument continuu cu funcții de argument discret. Aplicarea oricărei metode numerice introduce inevitabil erori în rezultate. Pot fi identificate trei componente principale ale erorii care apare în soluția numerică a problemei inițiale: eroarea inerentă, asociată cu specificarea imprecisă a datelor de intrare (condiții inițiale și la limită, coeficienți ai ecuațiilor și termeni liberi); eroarea de discretizare, asociată cu trecerea la un analog discret al problemei inițiale; și eroarea de rotunjire, asociată cu precizia finită a numerelor reprezentate într-un calculator.

O cerință naturală pentru orice algoritm computațional specific este consistența ordinelor de mărime ale acestor trei tipuri de erori.

O metodă numerică, sau aproximativă, este întotdeauna implementată sub forma unui algoritm computațional. Prin urmare, toate cerințele care se aplică algoritmilor în general se aplică și algoritmilor computaționali. În primul rând, un algoritm trebuie să fie fezabil — trebuie să rezolve problema într-un timp de calcul acceptabil. O caracteristică importantă a unui algoritm este precizia sa — capacitatea de a obține o soluție a problemei inițiale cu o precizie dată într-un număr finit de operații.

Timpul de execuție al unui algoritm depinde de numărul de operații necesare pentru a atinge precizia specificată. Pentru orice problemă matematică, de regulă, pot fi propuși mai mulți algoritmi care oferă o soluție cu precizia dorită, dar într-un număr diferit de operații. Algoritmii care necesită mai puține operații pentru a atinge aceeași precizie se numesc mai economici, sau mai eficienți.

În timpul execuției unui algoritm computațional, la fiecare pas de calcul apare o anumită eroare. De la un pas la altul, această eroare poate crește sau nu (și în unele cazuri poate chiar scădea). Dacă eroarea crește nelimitat în timpul calculului, se spune că algoritmul este instabil, sau divergent. În caz contrar, se spune că algoritmul este stabil, sau convergent.

Enorma varietate de metode numerice face ca selectarea unei metode anume, în fiecare caz specific, să fie considerabil de dificilă. Întrucât mai multe metode algoritmice alternative pot fi folosite pentru implementarea unui model dat, alegerea unei metode specifice se face în funcție de care dintre ele este cea mai adecvată pentru model din punctul de vedere al eficienței, stabilității și precizia rezultatelor, precum și de care este cea mai familiară membrilor echipei de proiect.

În crearea diverselor sisteme software folosite pentru rezolvarea unei game largi de sarcini de cercetare, proiectare-inginerie și management, modelele matematice servesc astăzi, în general, ca fundament. Acest lucru generează necesitatea implementării unui model sub forma unui program de calculator. Procesul de dezvoltare a unui software fiabil și eficient nu este mai puțin complex decât toate etapele precedente de creare a modelului matematic. Rezolvarea cu succes a acestei sarcini este posibilă doar cu stăpânirea sigură a limbajelor și tehnologiilor moderne de programare, cunoașterea capacităților de calcul, a software-ului disponibil și a particularităților implementării metodelor matematicii computaționale.

Procesul de dezvoltare a software-ului poate fi împărțit în mai multe etape:

  • pregătirea caietului de sarcini pentru dezvoltarea software-ului;
  • proiectarea structurii sistemului software;
  • codificarea algoritmului;
  • testarea și depanarea;
  • întreținerea și exploatarea.

Caietul de sarcini pentru dezvoltarea software-ului este documentat sub forma unei specificații. La etapa de proiectare se formează structura generală a sistemului software. Întregul program este împărțit în module software. Pentru fiecare modul se formulează cerințele funcționale și se elaborează un algoritm care implementează aceste funcții. Este definită schema de interacțiune dintre module — numită diagrama fluxului de date a sistemului software. Se elaborează un plan de testare și se specifică datele de intrare pentru testarea modulelor individuale și a sistemului în ansamblu.

Majoritatea programelor care implementează modele matematice constau din trei părți principale:

  • un preprocesor (pregătirea și verificarea datelor de intrare ale modelului);
  • un rezolvitor (rezolvarea problemei, efectuarea experimentului computațional);
  • un postprocesor (vizualizarea și prezentarea rezultatelor).

Trebuie acordată o importanță considerabilă adoptării tehnologiilor moderne de programare. Scopul oricărei astfel de tehnologii este, în primul rând, îmbunătățirea fiabilității software-ului și creșterea productivității dezvoltatorilor. Cu cât proiectul software este mai serios și de amploare mai mare, cu atât mai importante devin chestiunile privind aplicarea tehnologiilor moderne de programare. Neglijarea acestor aspecte poate conduce la întârzieri semnificative de timp și la reducerea fiabilității sistemului software.

Un factor critic pentru asigurarea fiabilității și a unui timp scurt de dezvoltare a unui sistem software destinat rezolvării unei clase specifice de probleme este disponibilitatea unei biblioteci bine dezvoltate de module software compatibile între ele. Un program este mai fiabil și poate fi dezvoltat mai rapid atunci când sunt folosite, în cea mai mare măsură posibilă, componente software standard.

Adecvarea unui model matematic este gradul în care rezultatele obținute din modelul elaborat corespund datelor experimentale sau rezultatelor unei probleme de referință.

Validarea modelului servește două obiective:

  • verificarea validității setului de hipoteze formulate la etapele de formulare conceptuală și matematică. Trebuie să se treacă la verificarea hipotezelor doar după ce metodele de rezolvare au fost verificate și software-ul a fost supus unei depanări cuprinzătoare și eliminării tuturor erorilor și conflictelor;
  • stabilirea faptului că precizia rezultatelor corespunde precizia specificată în caietul de sarcini.

Validarea modelului matematic elaborat se realizează prin compararea sa cu datele experimentale disponibile privind obiectul real sau cu rezultatele altor modele, deja create și bine verificate anterior. În primul caz se vorbește despre validare prin comparare cu experimentul; în al doilea, despre comparare cu rezultatele unei probleme de referință.

Chestiunea preciziei modelării depinde de cerințele impuse modelului și de scopul său. Trebuie luate în considerare, de asemenea, precizia rezultatelor experimentale sau particularitățile formulărilor problemei de referință. Pentru modelele destinate calculelor aproximative și de ordin de mărime, o precizie de 10–15% este considerată satisfăcătoare. Pentru modelele folosite în sisteme de control și monitorizare, precizia necesară poate fi de 1–2% sau chiar mai mare.

Când apar probleme legate de adecvarea modelului, corectarea trebuie să înceapă cu o analiză sistematică a tuturor cauzelor posibile ale discrepanței dintre rezultatele modelării și rezultatele experimentale. În primul rând, modelul trebuie investigat și gradul său de adecvare evaluat pentru diverse valori ale parametrilor variabili (condiții inițiale și la limită, parametri care caracterizează proprietățile obiectelor de modelare). Dacă modelul este inadecvat în intervalul de parametri de interes pentru cercetător, se poate încerca rafinarea valorilor constantelor și parametrilor inițiali ai modelului. Dacă nici acest lucru nu produce rezultate pozitive, singura modalitate rămasă de a îmbunătăți modelul este revizuirea sistemului de hipoteze adoptat. Această decizie înseamnă, de fapt, revenirea la etapa a doua a procesului de dezvoltare a modelului și poate implica nu doar o modificare majoră a formulării matematice, ci și a metodelor de rezolvare (de exemplu, trecerea de la metode analitice la metode numerice), o refacere completă a software-ului și un nou ciclu de validare a modelului. Prin urmare, decizia de a revizui sistemul de hipoteze adoptat trebuie cântărită temeinic și luată doar atunci când toate celelalte căi de îmbunătățire a adecvării modelului au fost epuizate.

Modelele descriptive sunt destinate să caracterizeze parametrii studiați într-un fenomen sau proces dat, precum și să investigheze legile care guvernează schimbarea acestor parametri. Aceste modele pot fi folosite pentru a studia proprietățile și comportamentul obiectului investigat sub diverse combinații de date de intrare și condiții de funcționare; în construirea modelelor de optimizare; și în construirea modelelor de simulare a sistemelor complexe.

Modelele dezvoltate în scopuri de cercetare nu sunt, de regulă, aduse la nivelul unor sisteme software destinate distribuirii către utilizatori externi. Durata lor de viață este de obicei limitată la durata programului de cercetare din domeniul corespunzător. Aceste modele se caracterizează printr-o natură exploratorie, prin utilizarea de noi proceduri și algoritmi computaționali și printr-o interfață de utilizator neelaborată.

Modelele și sistemele software construite pe baza lor, destinate distribuirii ulterioare către utilizatori externi sau lansării comerciale, dispun de o interfață bine dezvoltată, prietenoasă cu utilizatorul, și de preprocesoare și postprocesoare puternice. Aceste modele se bazează de obicei pe formulări și proceduri computaționale dovedite și bine stabilite. Cu toate acestea, trebuie ținut cont de faptul că astfel de modele sunt concepute doar pentru rezolvarea unei clase clar definite de probleme.

Independent de aplicația destinată a modelului, echipa de dezvoltare este obligată să efectueze atât analiza qualitativă, cât și cea cantitativă a rezultatelor modelării.

Prin munca cu modelul, dezvoltatorii devin specialiști în domeniul asociat obiectului de modelare. Aceștia dezvoltă o înțelegere suficient de temeinică a proprietăților obiectului și sunt capabili să prezică și să explice comportamentul acestuia.

O analiză cuprinzătoare a rezultatelor modelării permite, prin urmare:

  • modificarea obiectului considerat, găsirea caracteristicilor sale optime sau, cel puțin, luarea în considerare, în cel mai bun mod posibil, a comportamentului și proprietăților sale;
  • delimitarea domeniului de aplicabilitate al modelului;
  • verificarea validității hipotezelor adoptate la etapa formulării matematice și evaluarea posibilității de a simplifica modelul pentru a-i îmbunătăți eficiența, păstrând în același timp precizia necesară;
  • indicarea direcției în care modelul ar trebui dezvoltat în continuare.