Сохранение выходных данных решателя жестких уравнений odeint

Мне было интересно, есть ли способ сохранить вывод следующего код в матрицу повышения или вектор.

size_t num_of_steps = integrate_const( make_dense_output< rosenbrock4< double > >( 1.0e-6 , 1.0e-6 ) ,
        make_pair( stiff_system() , stiff_system_jacobi() ) ,
        x , 0.0 , 50.0 , 0.01 ,cout << phoenix::arg_names::arg2 << " " << phoenix::arg_names::arg1[0] << "\n" );

Строки 94-97 выше передают операторы cout ‹‹ "" ‹‹ endl в функцию в качестве аргументов. Эти операторы печатают результаты. Я не нашел способа сохранить результаты, изменив эти переданные операторы.


person Nirjhar    schedule 21.09.2017    source источник
comment
знаете ли вы о концепции MCVE?   -  person Fureeish    schedule 22.09.2017
comment
Я не был, но я только бегло прочитал это. Я не думаю, что есть способ сократить связанный код и в то же время сделать результаты воспроизводимыми. У вас есть предложения по редактированию?   -  person Nirjhar    schedule 22.09.2017
comment
Из того, что я прочитал, взглянув на ваш код, я вижу, что вы просто выполняете cout << с разными типами данных, что звучит как проблема, когда вы хотите сохранить эти данные, а не отображать их. Каждый вызов cout << T вызывает std::ostream& operator << с T в качестве аргумента. Вопрос - сохранять данные в vector или matrix обязательно? Что-то не так с std::stringstream? В некотором смысле он может вести себя как контейнер.   -  person Fureeish    schedule 22.09.2017
comment
Использование stringstream, по-видимому, сохраняет весь вывод в один stringstream. Мне нужно хранить вывод через определенные промежутки времени и отдельно по ним.   -  person Nirjhar    schedule 26.09.2017
comment
Что не так с разделителем?   -  person Fureeish    schedule 26.09.2017
comment
Да, это сработает. Но я нашел другое решение, которое может быть более эффективным. Спасибо. Я вставлю это в ответ.   -  person Nirjhar    schedule 29.09.2017


Ответы (1)


Вектор x хранит значения состояния в разное время, поэтому простые операторы присваивания, такие как

 a[0] = x[0];

где a[0] - это вектор, в котором вы хотите сохранить свой вывод, будет работать.

person Nirjhar    schedule 28.09.2017