Marko Petek's Thesis application 1.0
The Marko Petek's code for numerical analysis of nonlinear damped and driven oscillation.

IG::MPetekLib::Algorithms::Solver::DEInitialProblemSolver Class Reference

Inheritance diagram for IG::MPetekLib::Algorithms::Solver::DEInitialProblemSolver:
Collaboration diagram for IG::MPetekLib::Algorithms::Solver::DEInitialProblemSolver:

List of all members.

Public Member Functions

abstract void SolvingAlgorithm ()
 Specifična meroda reševanja DE, ki jo implementira vsak dedič posebej. Uporabi se znotraj starševske metode Solve. Podati moramo tabelo rešitev, v katero bo algoritem zapisoval.
void PrepareForSolving ()
 Nastavi velikost koraka, število korakov. Nastavi vsa stanja.
void Solve ()
 Metoda, ki reši DE - zapolni tabelo rešitev z vrednostmi. Tukaj so definirane pričakovane operacije vsakega solverja (inicializacija tabele rešitev, izračun števila korakov...)Po teh operacijah se kliče specifični algoritem reševanja (npr. RK4), ki mora biti definiran v vsakem dediču posebej.
void CalculateErrors ()
 Izračuna napake tako, da primerja rešitev pri trenutni dolžini koraka z rešitvijo pri pol manjši dolžini koraka.
void PostProcessErrors (int pointsPerDomain)
 Najprej izračuna absolutne vrednosti napak. Potem poskuša zgladiti krivuljo (uporabno če ta oscilira).

Parameters:
pointsPerDomainČe bi bila funkcija monotona, bi se izbralo toliko točk v enakomernih razmikih.

void VerifyErrorsValidity (int checkNeighborhood)
 Izračuna še rešitve pri različnih velikostih koraka. Velikosti koraka se druga od druge razlikujejo za nek celoštevilski faktor (ponavadi 2). Potem izračuna za vsako od teh rešitev še napake in pri vsaki shrani največjo napako. Razlike napak nato zaporedomadeli med seboj. Ti členi morajo težiti proti konstanti povezani z redom metode.
void PrintResults (TextWriter writer)
 Prints the solution the specified text writer.
void PrintResults (string filePath)
 Prints the solution to the specified file. If the file exists then it is overwritten.
void PrintResults ()
 Prints solution to the console.
void PrintResultsOld ()

Public Attributes

double _stepSize
 Velikost koraka metode. To polje uporabljaj v kodi, uporabnik naj uporablja lastnost.
int _nSteps
 Število korakov reševanja na podanem intervalu neodvisne spremenljivke.
List< double[]> _solution
 Dvostopenjska tabela namenjena risanju rešitve. Po klicu Solve() vsebuje rešene vrednosti razmaknjene v enakomernih korakih za neodvisno spremenljivko.Oblika: [ [x0,f(0),f'(0),f''(0)], [x(1),f(1),f'(1),f''(1)], [x(2),f(2),f'(2),f''(2)], ... ]Po ocenitvi napak lahko ta tabela vsebuje tudi kaj drugega.
int _solutionSize
 Celo število, ki pove velikost tabele, ki nosi vse podatke na nekem koraku reševanja: [x0,f(0),f'(0),f''(0)] ---> Velikost je enaka: Red(DE) + 2.
SolverStates _state
 Stanje v katerem se solver nahaja (kateri parametri so podani, katere metode so že bile klicane ...)

Protected Attributes

double[] _initialConditions
 Začetni pogoji, oz. vse vrednosti odvodov, funkcije same in neodvisne spremenljivke na ničtem koraku. Primer za enačbo II. reda: [x, f, f', f'']. Velikost tabele je torej enaka: Red(DE) + 2.Sicer rabimo pri reševanju DE samo toliko začetnih pogojev, kot je red DE.Da ne kompliciramo, se tukaj manjkajoča vrednost (npr. f'') izračuna in vnese kar ročno.
double _endPoint
 Končna vrednost neodvisne spremenljivke, do katere bomo DE reševali. Npr. končni čas.
List< string > _solveVariableNames
 Imena spremenljivk vezana na metodo Solve (imena spremenljivk DE). Uporabnik mora to polje nujno podati.
List< string > _variableNames
 Imena spremenljivk trenutne tabele Solution. Uporabno, če se splošni solver uporablja samostojno in se riše kar iz njega. Uporabnik tega polja ne podaja.
HighestDerivativeFunctionDelegate _highestDerivative
 Instanca delegata, ki Solver veže z ustrezno DE definirano v razredu DifferentialEquations.
int _solvingMethodOrder
 Red metode s katero rešujemo DE. Red se poda komaj v specifičnem algoritmu reševanja: SolvingAlgorithm().
List< double[]> _originalSolution
 Shramba. Vsebuje rešitev, ki je nastala ob zadnjem klicu Solve(). Ta seznam uporablja CalculateErrors, saj se znotraj nje ponovno kliče Solve() in se stara rešitev prepiše.
List< double[]> _errors
int _errorEstimateCoefficient = 2
 Koeficient geometrijskega zaporedja, ki pove delilnik med zaporednima velikostima koraka.

Properties

virtual string Name [get]
 Ime grafa.
double[] InitialConditions [get, set]
 Začetni pogoji, oz. vse vrednosti odvodov, funkcije same in neodvisne spremenljivke na ničtem koraku. Primer za enačbo II. reda: [x, f, f', f'']. Velikost tabele je torej enaka: Red(DE) + 2.Sicer rabimo pri reševanju DE samo toliko začetnih pogojev, kot je red DE.Da ne kompliciramo, se tukaj manjkajoča vrednost (npr. f'') izračuna in vnese kar ročno.
double EndPoint [get, set]
 Končna vrednost neodvisne spremenljivke, do katere bomo DE reševali. Npr. končni čas.
double StepSize [get, set]
 Velikost koraka metode. To lastnost naj uporablja uporabnik, v kodi uporabljaj polje.
int NSteps [get, set]
 Število korakov reševanja na podanem intervalu neodvisne spremenljivke.
List< double[]> Solution [get, set]
 Dvostopenjska tabela namenjena risanju rešitve. Po klicu Solve() vsebuje rešene vrednosti razmaknjene v enakomernih korakih za neodvisno spremenljivko.Oblika: [ [x0,f(0),f'(0),f''(0)], [x(1),f(1),f'(1),f''(1)], [x(2),f(2),f'(2),f''(2)], ... ]Po ocenitvi napak lahko ta tabela vsebuje tudi kaj drugega.
List< string > SolveVariableNames [get, set]
 Imena spremenljivk vezana na metodo Solve (imena spremenljivk DE). Uporabnik mora to polje nujno podati.
List< string > VariableNames [get, set]
 Imena spremenljivk trenutne tabele Solution. Uporabno, če se splošni solver uporablja samostojno in se riše kar iz njega. Uporabnik tega polja ne podaja.
HighestDerivativeFunctionDelegate HighestDerivative [get, set]
 Instanca delegata, ki Solver veže z ustrezno DE definirano v razredu DifferentialEquations.
SolverStates State [get, set]
 Stanje v katerem se solver nahaja (kateri parametri so podani, katere metode so že bile klicane ...)

Member Function Documentation

abstract void IG::MPetekLib::Algorithms::Solver::DEInitialProblemSolver::SolvingAlgorithm ( ) [pure virtual]

Specifična meroda reševanja DE, ki jo implementira vsak dedič posebej. Uporabi se znotraj starševske metode Solve. Podati moramo tabelo rešitev, v katero bo algoritem zapisoval.

Implemented in IG::MPetekLib::Algorithms::Solver::DEInitialProblemSolverRK4.

void IG::MPetekLib::Algorithms::Solver::DEInitialProblemSolver::PrepareForSolving ( ) [inline]

Nastavi velikost koraka, število korakov. Nastavi vsa stanja.

void IG::MPetekLib::Algorithms::Solver::DEInitialProblemSolver::Solve ( ) [inline]

Metoda, ki reši DE - zapolni tabelo rešitev z vrednostmi. Tukaj so definirane pričakovane operacije vsakega solverja (inicializacija tabele rešitev, izračun števila korakov...)Po teh operacijah se kliče specifični algoritem reševanja (npr. RK4), ki mora biti definiran v vsakem dediču posebej.

void IG::MPetekLib::Algorithms::Solver::DEInitialProblemSolver::CalculateErrors ( ) [inline]

Izračuna napake tako, da primerja rešitev pri trenutni dolžini koraka z rešitvijo pri pol manjši dolžini koraka.

void IG::MPetekLib::Algorithms::Solver::DEInitialProblemSolver::PostProcessErrors ( int  pointsPerDomain) [inline]

Najprej izračuna absolutne vrednosti napak. Potem poskuša zgladiti krivuljo (uporabno če ta oscilira).

Parameters:
pointsPerDomainČe bi bila funkcija monotona, bi se izbralo toliko točk v enakomernih razmikih.

void IG::MPetekLib::Algorithms::Solver::DEInitialProblemSolver::VerifyErrorsValidity ( int  checkNeighborhood) [inline]

Izračuna še rešitve pri različnih velikostih koraka. Velikosti koraka se druga od druge razlikujejo za nek celoštevilski faktor (ponavadi 2). Potem izračuna za vsako od teh rešitev še napake in pri vsaki shrani največjo napako. Razlike napak nato zaporedomadeli med seboj. Ti členi morajo težiti proti konstanti povezani z redom metode.

Parameters:
checkNeighborhoodKolikokrat naj metoda za nek fiksen faktor zmanjša dolžino koraka.
void IG::MPetekLib::Algorithms::Solver::DEInitialProblemSolver::PrintResults ( TextWriter  writer) [inline]

Prints the solution the specified text writer.

Parameters:
writer
void IG::MPetekLib::Algorithms::Solver::DEInitialProblemSolver::PrintResults ( string  filePath) [inline]

Prints the solution to the specified file. If the file exists then it is overwritten.

Parameters:
filePathPath of the file where solution is written.
void IG::MPetekLib::Algorithms::Solver::DEInitialProblemSolver::PrintResults ( ) [inline]

Prints solution to the console.

void IG::MPetekLib::Algorithms::Solver::DEInitialProblemSolver::PrintResultsOld ( ) [inline]

Member Data Documentation

Začetni pogoji, oz. vse vrednosti odvodov, funkcije same in neodvisne spremenljivke na ničtem koraku. Primer za enačbo II. reda: [x, f, f', f'']. Velikost tabele je torej enaka: Red(DE) + 2.Sicer rabimo pri reševanju DE samo toliko začetnih pogojev, kot je red DE.Da ne kompliciramo, se tukaj manjkajoča vrednost (npr. f'') izračuna in vnese kar ročno.

Končna vrednost neodvisne spremenljivke, do katere bomo DE reševali. Npr. končni čas.

Velikost koraka metode. To polje uporabljaj v kodi, uporabnik naj uporablja lastnost.

Število korakov reševanja na podanem intervalu neodvisne spremenljivke.

Dvostopenjska tabela namenjena risanju rešitve. Po klicu Solve() vsebuje rešene vrednosti razmaknjene v enakomernih korakih za neodvisno spremenljivko.Oblika: [ [x0,f(0),f'(0),f''(0)], [x(1),f(1),f'(1),f''(1)], [x(2),f(2),f'(2),f''(2)], ... ]Po ocenitvi napak lahko ta tabela vsebuje tudi kaj drugega.

Celo število, ki pove velikost tabele, ki nosi vse podatke na nekem koraku reševanja: [x0,f(0),f'(0),f''(0)] ---> Velikost je enaka: Red(DE) + 2.

Imena spremenljivk vezana na metodo Solve (imena spremenljivk DE). Uporabnik mora to polje nujno podati.

Imena spremenljivk trenutne tabele Solution. Uporabno, če se splošni solver uporablja samostojno in se riše kar iz njega. Uporabnik tega polja ne podaja.

Instanca delegata, ki Solver veže z ustrezno DE definirano v razredu DifferentialEquations.

Red metode s katero rešujemo DE. Red se poda komaj v specifičnem algoritmu reševanja: SolvingAlgorithm().

Shramba. Vsebuje rešitev, ki je nastala ob zadnjem klicu Solve(). Ta seznam uporablja CalculateErrors, saj se znotraj nje ponovno kliče Solve() in se stara rešitev prepiše.

Koeficient geometrijskega zaporedja, ki pove delilnik med zaporednima velikostima koraka.

Stanje v katerem se solver nahaja (kateri parametri so podani, katere metode so že bile klicane ...)


Property Documentation

virtual string IG::MPetekLib::Algorithms::Solver::DEInitialProblemSolver::Name [get]
double [] IG::MPetekLib::Algorithms::Solver::DEInitialProblemSolver::InitialConditions [get, set]

Začetni pogoji, oz. vse vrednosti odvodov, funkcije same in neodvisne spremenljivke na ničtem koraku. Primer za enačbo II. reda: [x, f, f', f'']. Velikost tabele je torej enaka: Red(DE) + 2.Sicer rabimo pri reševanju DE samo toliko začetnih pogojev, kot je red DE.Da ne kompliciramo, se tukaj manjkajoča vrednost (npr. f'') izračuna in vnese kar ročno.

double IG::MPetekLib::Algorithms::Solver::DEInitialProblemSolver::EndPoint [get, set]

Končna vrednost neodvisne spremenljivke, do katere bomo DE reševali. Npr. končni čas.

double IG::MPetekLib::Algorithms::Solver::DEInitialProblemSolver::StepSize [get, set]

Velikost koraka metode. To lastnost naj uporablja uporabnik, v kodi uporabljaj polje.

int IG::MPetekLib::Algorithms::Solver::DEInitialProblemSolver::NSteps [get, set]

Število korakov reševanja na podanem intervalu neodvisne spremenljivke.

List<double[]> IG::MPetekLib::Algorithms::Solver::DEInitialProblemSolver::Solution [get, set]

Dvostopenjska tabela namenjena risanju rešitve. Po klicu Solve() vsebuje rešene vrednosti razmaknjene v enakomernih korakih za neodvisno spremenljivko.Oblika: [ [x0,f(0),f'(0),f''(0)], [x(1),f(1),f'(1),f''(1)], [x(2),f(2),f'(2),f''(2)], ... ]Po ocenitvi napak lahko ta tabela vsebuje tudi kaj drugega.

Implements IG::MPetekLib::Algorithms::Plotter::IPlottable.

List<string> IG::MPetekLib::Algorithms::Solver::DEInitialProblemSolver::SolveVariableNames [get, set]

Imena spremenljivk vezana na metodo Solve (imena spremenljivk DE). Uporabnik mora to polje nujno podati.

List<string> IG::MPetekLib::Algorithms::Solver::DEInitialProblemSolver::VariableNames [get, set]

Imena spremenljivk trenutne tabele Solution. Uporabno, če se splošni solver uporablja samostojno in se riše kar iz njega. Uporabnik tega polja ne podaja.

Implements IG::MPetekLib::Algorithms::Plotter::IPlottable.

HighestDerivativeFunctionDelegate IG::MPetekLib::Algorithms::Solver::DEInitialProblemSolver::HighestDerivative [get, set]

Instanca delegata, ki Solver veže z ustrezno DE definirano v razredu DifferentialEquations.

SolverStates IG::MPetekLib::Algorithms::Solver::DEInitialProblemSolver::State [get, set]

Stanje v katerem se solver nahaja (kateri parametri so podani, katere metode so že bile klicane ...)


The documentation for this class was generated from the following file:
 All Classes Namespaces Files Functions Variables Enumerations Properties