首页 > 解决方案 > C++ 和 ode 系统:如何处理?

问题描述

我想编写一个类来使用 C++ 中的 Euler 方法解决ODE系统(我是初学者)。如果方程是标量,则没有问题,因为我可以将解存储在 a 中,vector或者我可以动态分配一个数组double* sol = new double[N_points]

如果我必须处理矩阵,事情开始变得奇怪,所以我的问题是:**我应该使用一些库Eigen吗?还是我应该与指针斗争?

我正在寻找一些好的方法/参考来确定哪种方法是处理这种情况的正确/最佳方法。

标签: c++arrayseigennumeric

解决方案


如果您想使用矩阵,您可以使用数组数组来执行此操作,或者使用带有一维数组(或向量)的简化抽象层来存储矩阵数据,例如:

std::vector<double> matrix(row * columns);

要访问一个项目,您可以使用简单的算术,例如:

int index = rowIndex * totalColumns + columnIndex;
double item = matrix[index];

您可以查看我的DoubleMatrix库(不使用它,只需查看)以获取此实现的示例。


推荐阅读