Решение систем нелинейных уравнений https://www.mapleprimes.com/users/one%20man/posts?page=1
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

sysosndan.h 2.2KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. #ifndef SYSOSNDAN_H
  2. #define SYSOSNDAN_H
  3. #include <fstream>
  4. #include <sstream>
  5. #include <string>
  6. #include <vector>
  7. typedef std::vector < double > state_type;
  8. typedef void (*func_t)(const state_type &, state_type &, const double );
  9. struct soldif
  10. {
  11. double N; //число шагов
  12. double dt; //точность
  13. int dln; //размерность пространства
  14. std::string str_sm; //название переменной
  15. state_type x0; //начальное положение
  16. int nsv; //число свободных переменных
  17. int nv; //размерность вектора начального положения
  18. std::vector<std::string> eqn; //уравнения
  19. std::vector<std::string> eqn_svob; //уравнения свободных недоопределенной системы число степеней свободы больше единицы; nsv=2,3..
  20. std::vector<std::string> up; //управляющие параметры
  21. bool esup; // наличие управляющих параметров в уранвнениях
  22. bool npp; //не перезаписывать cpp-файл
  23. bool noc; //не компилировать cpp-файл
  24. };
  25. class sys_osn_dan
  26. {
  27. public:
  28. sys_osn_dan(std::stringstream &, const bool, const bool); // исходные данные
  29. //sys_osn_dan(draghilevinout &); // исходные данные
  30. void set_par_diff(double &_N, double &_dt){N=_N; dt=_dt;};
  31. void est_upr_par(bool &_est_up){est_up=_est_up;};
  32. void set_coord(state_type &_x) {x=_x;};
  33. void set_resIN(state_type &_coord) {res=_coord;};
  34. void set_uprIN(state_type &_upr_) {upr_par=_upr_;};
  35. state_type &get_resOUT() {return res;};
  36. state_type &get_uprOUT() {return upr_par;};
  37. soldif &get_par_diff();
  38. private:
  39. void isxod_dan(std::stringstream &); // исходные данные
  40. std::string &razdto_(std::string &); //замена разделителей на _
  41. soldif A;
  42. int n_svob; //число свободных переменных
  43. int N_var;
  44. std::string dimension, str_sm;
  45. static unsigned dim_line;
  46. state_type x, res, upr_par;//res - полученное решение
  47. double dt, N;
  48. bool nocomp, nocpp, est_up;
  49. std::vector<std::string> equations, equations_svob, uprav_par_naz;
  50. };
  51. #endif