-
Notifications
You must be signed in to change notification settings - Fork 0
/
DifEgyenletek.h
54 lines (43 loc) · 1.7 KB
/
DifEgyenletek.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#ifndef DIFEGYENLETEK_H
#define DIFEGYENLETEK_H
#include "Bolygo.h"
/*****************************************************************************/
//Runge-Kutta modszernek megfeleloen dX/dt = F(t, X) alakban felirt
/* X(t) = [x1(t), x2(t), ..., xn(t)]
F(X) = [f1(X), f2(X), ..., fn(X)]
dX(t)/dt = [dx1(t)/dt, dx2(t)/dt, ..., dxn(t)/dt] */
//egy fuggetlen valtozos elsorendu differencialegyenletek tarolasara
//(a feladatnak megfelelo 4db differencialegenlettel megavolsitva)
/*****************************************************************************/
namespace mercure
{
class DifEgyenletek
{
private:
double* X; //kezdeti es eppen aktualis ertekeket tartalmazo tombre fog mutatni
const int N; //valtozok szama - hazifeladatban: 5 (t, x, y, vy, vy)
//differencialegyenletek parameterei:
const double M; //Nap tomege
const double G; //gravitacios allando
//hogy kesobb rgyszeruen csak indexekkel tudjunk az egyenletekre hivatkozni:
typedef double (DifEgyenletek::*tagfuggvenypointer)(double* X);
tagfuggvenypointer* fp;
//differencialegyenletek:
double dx1dt(double* X);
double dx2dt(double* X);
double dx3dt(double* X);
double dx4dt(double* X);
public:
DifEgyenletek(double* _X, int _N); //alapvetoen kezdeti ertekeket tartalmazo
//tomb megadasaval es (esetleges ellenorzes keppen)
//a differencial egyenletek szamaval tudjuk letrehozni
//a kezdeti ertek feladatot
DifEgyenletek(Bolygo& _Bolygo, int _N); //masik parameterlistaju konstruktor
~DifEgyenletek();
friend class Euler;
friend class RungeKutta2;
friend class RungeKutta4;
friend class MegoldasiModszer;
};
}
#endif