20 double _factor1, _factor2;
45 X130(
double m1,
double m2,
double d,
double m3 = 1,
46 double xlim = 5,
double dx = 1,
47 double ylim = 5,
double dy = 1):
XModel (__func__)
48 , m1{ m1 } , m2{ m2 }, m3{ m3 }
49 , d{ 0.5*d }, dx{ dx } , dy{ dy }
50 , xlim{ xlim }, ylim{ ylim } {}
60 const double norm = nrm2(r);
64 double den = pow(norm, 3);
65 auto fResult = (_factor1 / den) * r;
76 const double norm = nrm2(r);
80 double den = pow(norm, 3);
81 auto fResult = (_factor2 / den) * r;
89 using namespace gravitation;
93 _factor1 = -Astronomy::G * m1 *
m3;
94 _factor2 = -Astronomy::G * m2 *
m3;
101 for (
double _x = -xlim; _x <
xlim; _x +=
dx) {
102 for (
double _y = -ylim; _y <
ylim; _y +=
dy) {
107 auto f = normalize(f1 + f2);
109 _data += { _x, _y,
f[0], f[1] };
110 }
catch (
const std::exception &err) {
111 std::cout << _x <<
"," << _y << std::endl;
112 std::cout << err.what() << std::endl;
123 mysplot << std::scientific << std::setprecision(2);
126 mysplot <<
"x y u v\n";
129 const auto sep =
" ", lend =
"\n";
130 for (
const auto &crow : _data.data()) {
134 << sep << crow[3] << lend;
145 const double m3 = 1.0;
147 const double m2 = 1e4;
149 const double d = 10.0;
151 const double xlim = 10,
dx = 1.5;
152 const double ylim = 10,
dy = 1.5;
auto force2(const Vector &v) const
force2 Berechnung der Kraft von m2 auf die Probemasse
static void error_if(const std::string &s, bool arg)
error_if Fehler wenn Bedingung erfüllt ist
void run()
run Gravitationsfeld welches von zwei Massen m1 und m2 erzeugt wird
The X130 class Gravitationsfeld zweier Massen.
The XModel class Basisklasse speichert eine ID in Form einer Zeichenkette enthält Hilfsfunktionen zur...
void save_data() const
save_data Speicherung der Daten, z.B. -1 -1 5 8
auto force1(const Vector &v) const
force1 Berechnung der Kraft von m1 auf die Probemasse
static std::ofstream get_output_stream(Format fmt)
get_output_stream
X130(double m1, double m2, double d, double m3=1, double xlim=5, double dx=1, double ylim=5, double dy=1)
X130 Konstruktor.
void exec()
exec Berechnung der normierten Kraftvektoren
The Vector class Klasse für gsl-Vektoren zussamengesetzt aus Komponenten.
double f(double x, void *params)
f
static void all(const std::string &s, std::initializer_list< bool > lst)
input teste mehrere Bedingungen auf einmal