#include #include #include "fits.hpp" int main(int argc, char* argv[]) { unsigned N = 80; int opt; while ((opt = getopt(argc, argv, "M:s:S:B:i:N:")) != -1) { switch (opt) { case 'N': N = (unsigned)atof(optarg); break; default: exit(1); } } std::string firstline; std::getline(std::cin, firstline); std::stringstream ss; ss << firstline; Data data; while (!ss.eof()) { Real x, y; ss >> x; ss >> y; data.push_back({x,y}); } Rng r; std::cout << std::setprecision(15); for (unsigned i = 0; i < 5; i++) { Vector a₀ = Vector::Zero(N); for (Real& aa : a₀) { aa = r.variate(0, 2e-2); } Vector a = stochasticGradientDescent(data, a₀, 10, 1e12); for (Real ai : a) { std::cout << ai << " "; } std::cout << std::endl; } for (unsigned i = 0; i < 5; i++) { Vector a₀ = Vector::Zero(N); for (Real& aa : a₀) { aa = r.variate(0, 5); } Vector a = stochasticGradientDescent(data, a₀, 10, 1e12); for (Real ai : a) { std::cout << ai << " "; } std::cout << std::endl; } return 0; }