Код: Выделить всё
rval[0] = -p1*x + p2*y*z;
rval[1] = -rval[0] - p3*y*y - dy;
rval[0] -= dx;
rval[2] = x + y + z - 1;
Код: Выделить всё
rval[0] = (-0.04)*x + (1.0e4)*y*z;
rval[1] = -rval[0] - (3.0e7)*y*y - dy;
rval[0] -= dx;
rval[2] = x + y + z - 1;
Код, опробованный для приведенных выше уравнений, с библиотекой symengine
р>
Код: Выделить всё
// Create a map for substitution
SymEngine::map_basic_basic subs_map;
subs_map[x_sym] = real_double(x);
subs_map[y_sym] = real_double(y);
subs_map[z_sym] = real_double(z);
subs_map[dx_sym] = real_double(dx);
subs_map[dy_sym] = real_double(dy);
subs_map[dz_sym] = real_double(dz);
// Evaluate equations
rval[0] = SymEngine::eval_double(*resv1->subs(subs_map));
rval[1] = SymEngine::eval_double(*resv2->subs(subs_map));
rval[2] = SymEngine::eval_double(*resv3->subs(subs_map));
Есть ли альтернативный способ добиться высокой скорости вычисления уравнений путем замены параметров или существует ли другой способ добиться высокой скорости вычисления уравнений путем замены параметров? более быстрый способ сделать это и в symengine.
Примечание. Обратите внимание: я использую гораздо больший набор уравнений, чем этот, который выполняется несколько итераций за временной шаг, но я экспериментирую с меньшим набором уравнений. уравнения для проверки осуществимости решения.
Подробнее здесь: https://stackoverflow.com/questions/787 ... aster-comp