У меня есть следующий код. По существу он создает N случайных нормальных переменных и работает через уравнение M раз для моделирования.C++ Рекомендации по управлению выходом Матричные данные
Выходной сигнал должен быть матрицей данных NxM, однако единственный способ, которым я мог бы выполнять вычисление, иметь выход как MxN. т.е. каждый пробег M должен быть столбцом, а не строкой. Я тщетно попытался выполнить некоторые другие предложения, которые были опубликованы в предыдущих похожих темах.
Код:
#include <iostream>
#include <time.h>
#include <random>
int main()
{
double T = 1; // End time period for simulation
int N = 4; // Number of time steps
int M = 2; // Number of simulations
double x0 = 1.00; // Starting x value
double mu = 0.00; // mu(x,t) value
double sig = 1.00; // sigma(x,t) value
double dt = T/N;
double sqrt_dt = sqrt(dt);
double** SDE_X = new double*[M]; // SDE Matrix setup
// Random Number generation setup
double RAND_N;
srand ((unsigned int) time(NULL)); // Generator loop reset
std::default_random_engine generator (rand());
std::normal_distribution<double> distribution (0.0,1.0); // Mean = 0.0, Variance = 1.0 ie Normal
for (int i = 0; i < M; i++)
{
SDE_X[i] = new double[N];
for (int j=0; j < N; j++)
{
RAND_N = distribution(generator);
SDE_X[i][0] = x0;
SDE_X[i][j+1] = SDE_X[i][j] + mu * dt + sig * RAND_N * sqrt_dt; // The SDE we wish to plot the path for
std::cout << SDE_X[i][j] << " ";
}
std::cout << std::endl;
}
std::cout << std::endl;
std::cout << " The simulation is complete!!" << std::endl;
std::cout << std::endl;
system("pause");
return 0;
}
У вас будет больше шансов получить помощь, если вы обратитесь к другим вопросам, на которые вы смотрите, и объясните, почему их ответы не помогли решить вашу проблему. –
У вас есть C++ 11, так почему вы не используете 2d-вектор для хранения вашей матрицы? Почему вы посеяли старый ранд, чтобы генерировать случайное значение, чтобы засеять новый ранд? –
Я использую Visual studio 2010. Не думаю, что это C++ 11 (полностью). не распознается так, как обходной путь, который я отправил и засеял rand(). как для 2d-вектора ... Я посмотрю, посмотрю, смогу ли я заставить его работать. –