10 using namespace gravitation;
38 X410(
double m1,
double m2,
double theta,
double mu)
56 double _cTheta, _sTheta;
57 double _m12, _trm1, _den;
64 return m1 *
Earth::g * _cTheta / (1 - _m12 * _sTheta * _trm1);
72 return m2 *
Earth::g -
N1() * (mu * _sTheta + _cTheta);
79 double x1_ddot()
const {
80 double num =
Earth::g * _cTheta * (_m12 * _cTheta * _trm1 + mu);
81 double den = (1 - _m12 * _sTheta * _trm1);
82 return -
Earth::g * _sTheta + (num / den);
90 double x2_ddot()
const {
91 return -_m12 *
Earth::g * _cTheta * _trm1 / (1 - _m12 * _sTheta * _trm1);
104 _cTheta = cos(theta);
105 _sTheta = sin(theta);
106 _trm1 = mu * _cTheta - _sTheta;
107 _den = 1 - _m12 * _sTheta * _trm1;
110 set_result({ x1_ddot(), x2_ddot(),
N1(),
N2() });
127 const double cosTheta = cos(theta);
128 const double sinTheta = sin(theta);
130 { cosTheta, 1.0, (sinTheta - mu * cosTheta) / (m1), 0 },
131 { sinTheta, 0, -(cosTheta + mu * sinTheta) / (m1), 0 },
132 { 0, 1, -(sinTheta - mu * cosTheta) / (m2), 0 },
133 { 0, 0, (cosTheta + mu * sinTheta), 1 }
136 LU lusolver{ _left, _right };
139 set_result(lusolver.solution());
149 const double m1 = 1.0;
151 const double theta = 30._deg;
155 for (
double lambda : { 10, 100, 1000 }) {
156 for (
double mu : { 0., 0.1, 0.2 }) {
157 const double m2 = lambda * m1;
159 CModel1 cobj1{ m1, m2, theta, mu };
160 CModel2 cobj2{ m1, m2, theta, mu };
175 ofs1 << std::setprecision(2);
The CModel2 struct Rechenmodell Berechnet Daten durch direktes Lösen des Gleichungssystems.
The CModel1 class Rechenmodell Berechnet Daten durch Anwendung der hergeleiteten Formeln.
void save(std::ostream &ofs, Format fmt) const
save Schreibe Tabelle in Datei
The XModel class Basisklasse speichert eine ID in Form einer Zeichenkette enthält Hilfsfunktionen zur...
The X410 class Masse gleitet auf bewegliche schiefe Ebene (Modellklasse)
void solve()
solve Berechnung des Lösungsvektors
void apply()
exec Berechnung und Speicherung der Normalkräfte und der Beschleunigungen
X410(double m1, double m2, double theta, double mu)
X410 Konstruktor.
void run()
run Beschleunigte schiefe Ebene Erstellung von Beispieldaten
static std::ofstream get_output_stream(Format fmt)
get_output_stream
The LU_Decomposition class Lösung eines linearen Gleichungssystems mittels der LU-Zerlegung.
Idx
The Idx enum Zugriff auf die einzelnen Elemente.
The CResult class Speicherung von Rechenergebnissen.
static const Format latex
static constexpr double g
static void all(const std::string &s, std::initializer_list< bool > lst)
input teste mehrere Bedingungen auf einmal