This commit is contained in:
2025-09-21 22:53:23 +03:00
parent 5a74b84c1d
commit 2ac0141c60
2 changed files with 19 additions and 1 deletions

View File

@@ -10,7 +10,10 @@ Solver::Solver(double _A, double _B, double _C, double _D, int _N, int _l, int _
void Solver::Execute_Linear(double val1, double val2) {
// Локальная матрица жёсткости
MatrixXd local = MatrixXd::Zero(2, 2);
// Локальный вектор нагрузки
VectorXd local_load(2);
local(0, 0) = -A / L - B / 2. + C * L / 3.;
@@ -21,7 +24,10 @@ void Solver::Execute_Linear(double val1, double val2) {
local_load(0) = -D * L / 2.;
local_load(1) = -D * L / 2.;
// Глобальная матрица жёсткости
MatrixXd ansamb = MatrixXd::Zero(N + 1, N + 1);
// Глобальный вектор нагрузок
VectorXd global_load = VectorXd::Zero(N + 1);
// Ансамблирование
@@ -44,6 +50,7 @@ void Solver::Execute_Linear(double val1, double val2) {
std::cout << "Ansamb load vector:\n" << global_load << std::endl;
#endif
// Граничные условия
double u_right = val2;
ansamb.row(0).setZero();
ansamb.row(N).setZero();
@@ -61,6 +68,7 @@ void Solver::Execute_Linear(double val1, double val2) {
std::cout << "Modified load vector:\n" << global_load << std::endl;
#endif
// Решение системы
VectorXd solution = ansamb.fullPivLu().solve(global_load);
std::cout << "\nSolution:" << std::endl;
std::cout << solution << std::endl;
@@ -72,10 +80,15 @@ void Solver::Execute_Linear(double val1, double val2) {
file << std::endl;
}
// TODO: переделать под себя
void Solver::Execute_Cubic(double val1, double val2) {
int mat_dim = 1 + N * 3;
// Глобальная матрица жёсткости
Eigen::MatrixXd Amat(mat_dim, mat_dim);
// Глобальный вектор нагрузок
Eigen::VectorXd b(mat_dim);
Amat.setZero();
b.setZero();

View File

@@ -2,9 +2,14 @@
class Solver {
private:
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><>
double A, B, C, D;
// <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
double L;
int N, upper, lower;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int N;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
int upper, lower;
public:
Solver(double _A, double _B, double _C, double _D, int _N, int _l, int _u);
void Execute_Linear(double value_1, double value_2);