#include #include "include/praktable.hpp" #include "include/prakphys.hpp" using table = prak::table; using f64p = prak::pvalue; using f64v = std::vector; using vecarg = const std::vector &; using argvec = const std::vector &; void ex1(std::string file) { table t(file); t.apply([](argvec a){ return std::log(a[0]/a[1]); }, std::vector{"dp1", "dp"}, "ln"); t.write_plot("mnk.plot", "t", "ln", std::nullopt); auto [A, B] = t.least_squares_linear("t", "ln", std::nullopt, std::make_optional(0.1)); f64p gamma = prak::function([](vecarg a) { return std::exp(a[0]) / (std::exp(a[0]) - 1); }, {B}); f64p Cv = prak::R / (gamma - 1.0); f64p i = 2.0 * Cv / prak::R, Cp = Cv + prak::R; f64 m0 = 1.29 * 0.0127; f64p alpha = m0 * Cp * A, tau = 1.0 / A; std::cout << t var(A) var(B) var(gamma) var(Cv) var(i) var(m0) var(Cp) var(alpha) var(tau); } int main() { ex1("data"); return 0; }