numericalFunctions.h 958 B

12345678910111213141516171819202122232425
  1. #pragma once
  2. #include <stdlib.h>
  3. // 定义用于积分的动力学函数名的类型
  4. typedef void (*dynIntegFunc)(double*, double*, double*, double*, double*, void*);
  5. // 生成线性间距向量
  6. void linSpace(double x1, double x2, int n, double* y);
  7. // 升序线性插值
  8. void ascLinearInterp(double* X, double* Y, int N, int M, double* x, int n, double* y);
  9. // 数值积分函数
  10. void computeInteg(double* newState, // 新状态
  11. dynIntegFunc pfun, // 动力学方程
  12. double* oldState, double* control, double* parameter, void* auxdata, // 动力学方程输入
  13. int numState, int numControl, int numParameter, int numPath, // 变量维数
  14. double* tempWork, // 临时空间,避免重复申请和释放空间
  15. double stepSize, int integMode); // 积分步长和积分模式
  16. // 向量复制
  17. void copyIntVec(int* x, int* y, int n, int sign); // 整数
  18. void copyFloatVec(double* x, double* y, int n, int isNegtive); // 浮点数
  19. // 将向量的每个元素为a;
  20. void floatVecFillin(double* x, int n, double a);
  21. void intVecFillin(int* x, int n, int a);