Add files
This commit is contained in:
72
core/example/parameter_homotopy/src/main.cpp
Normal file
72
core/example/parameter_homotopy/src/main.cpp
Normal file
@@ -0,0 +1,72 @@
|
||||
#include "parameter_homotopy.hpp"
|
||||
#include "random.hpp"
|
||||
#include "my_system.hpp"
|
||||
|
||||
#include <chrono>
|
||||
int main()
|
||||
{
|
||||
bertini::LoggingInit();
|
||||
|
||||
|
||||
|
||||
|
||||
auto step1_params = demo::MakeStep1Parameters();
|
||||
auto target_sys_step1 = demo::ConstructSystem(step1_params);
|
||||
|
||||
std::cout << "your target_system for step 1:\n\n";
|
||||
std::cout << target_sys_step1 << '\n';
|
||||
|
||||
std::cout << "\n\nwith parameter values:\n\n";
|
||||
for (const auto& p : step1_params)
|
||||
std::cout << p << " ";
|
||||
std::cout << '\n';
|
||||
|
||||
// now to solve the start system.
|
||||
auto stepone_solutions = demo::StepOne(target_sys_step1);
|
||||
|
||||
std::cout << "done computing the " << stepone_solutions.size() << " step1 solutions, and here they are: \n";
|
||||
for (auto& iter : stepone_solutions)
|
||||
std::cout << iter << '\n' << '\n';
|
||||
|
||||
|
||||
auto t = bertini::Variable::Make("t");
|
||||
auto step2_stuff = demo::MakeStep2Parameters(step1_params, t);
|
||||
auto homotopy_sys_step2 = demo::ConstructSystem(std::get<0>(step2_stuff));
|
||||
homotopy_sys_step2.AddPathVariable(t);
|
||||
auto target_sys_step2 = demo::ConstructSystem(std::get<1>(step2_stuff));
|
||||
|
||||
int num_to_step2s = 100;
|
||||
auto start_allstep2 = std::chrono::high_resolution_clock::now();
|
||||
for (int ii=0; ii<num_to_step2s; ii++)
|
||||
{
|
||||
auto start_iteration = std::chrono::high_resolution_clock::now();
|
||||
|
||||
bertini::DefaultPrecision(30);
|
||||
// iterate over the parameter values. set the
|
||||
for (auto& p : std::get<1>(step2_stuff))
|
||||
{
|
||||
bertini::mpfr v;
|
||||
bertini::RandomReal(v, 30);
|
||||
p->precision(30);
|
||||
p->set_current_value(bertini::dbl(v));
|
||||
p->set_current_value(v);
|
||||
}
|
||||
|
||||
bertini::DefaultPrecision(16);
|
||||
|
||||
// std::cout << "your target system for step2:\n" << target_sys_step2 << '\n';
|
||||
// for (auto& p : std::get<1>(step2_stuff))
|
||||
// std::cout << "solving for parameter values " << *p << " " << p->Eval<bertini::dbl>() << '\n';
|
||||
|
||||
auto steptwo_solutions = demo::StepTwo(target_sys_step2, target_sys_step1, homotopy_sys_step2, stepone_solutions);
|
||||
|
||||
// std::cout << "done computing the " << steptwo_solutions.size() << " step2 solutions, and here they are: \n";
|
||||
// for (auto& iter : steptwo_solutions)
|
||||
// std::cout << iter << '\n' << '\n';
|
||||
|
||||
std::cout << (std::chrono::high_resolution_clock::now() - start_iteration).count() << '\n';
|
||||
}
|
||||
std::cout << "solving " << num_to_step2s << " " << (std::chrono::high_resolution_clock::now() - start_allstep2).count() << '\n';
|
||||
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user