Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
3918b03
add file
ZhestkovaAnastasia Dec 29, 2022
9593c36
Add files via upload
ZhestkovaAnastasia Dec 31, 2022
cefb892
Delete отчёт по лр 1.odt
ZhestkovaAnastasia Jan 1, 2023
7022048
Add files via upload
ZhestkovaAnastasia Jan 1, 2023
b6ef7eb
Create read.me
ZhestkovaAnastasia Apr 6, 2023
528c1a4
Create read.me
ZhestkovaAnastasia Apr 6, 2023
99f5994
Rename soort.cpp to sort/soort.cpp
ZhestkovaAnastasia Apr 7, 2023
2ca6591
Delete read.me
ZhestkovaAnastasia Apr 7, 2023
b92ddce
Add files via upload
ZhestkovaAnastasia Apr 7, 2023
5ed1998
Rename Teilor.fun.cpp to math.fun/Teilor.fun.cpp
ZhestkovaAnastasia Apr 7, 2023
d0a347d
Delete read.me
ZhestkovaAnastasia Apr 7, 2023
afea6c3
Update Teilor.fun.cpp
ZhestkovaAnastasia Apr 7, 2023
7af04f2
Update Teilor.fun.cpp
ZhestkovaAnastasia Apr 7, 2023
dc0b536
Add files via upload
ZhestkovaAnastasia Apr 9, 2023
9444478
Add files via upload
ZhestkovaAnastasia Apr 9, 2023
fa6638f
Delete текст для англа.odt
ZhestkovaAnastasia Apr 9, 2023
d92acb9
Add files via upload
ZhestkovaAnastasia Apr 9, 2023
ae2f5f7
Update Teilor.fun.cpp
ZhestkovaAnastasia Apr 13, 2023
58a0d09
Update Teilor.fun.cpp
ZhestkovaAnastasia Apr 13, 2023
b72f3a7
Update Teilor.fun.cpp
ZhestkovaAnastasia Apr 13, 2023
ae96a11
Update Teilor.fun.cpp
ZhestkovaAnastasia Apr 13, 2023
fcbb206
Add files via upload
ZhestkovaAnastasia Apr 13, 2023
995d1f0
Delete Отчёт по 2 лр.docx
ZhestkovaAnastasia Apr 13, 2023
c4ce6ca
Add files via upload
ZhestkovaAnastasia Apr 13, 2023
4351f9e
Delete Отчёт по 2 лр.docx
ZhestkovaAnastasia Apr 13, 2023
1e65859
Add files via upload
ZhestkovaAnastasia Apr 13, 2023
fc84424
Delete Отчёт по 2 лр.docx
ZhestkovaAnastasia Apr 13, 2023
d21f92e
Add files via upload
ZhestkovaAnastasia Apr 13, 2023
21a3f28
Update Teilor.fun.cpp
ZhestkovaAnastasia Apr 13, 2023
eb763ba
Delete Отчёт по 2 лр.docx
ZhestkovaAnastasia Apr 14, 2023
a21f456
Add files via upload
ZhestkovaAnastasia Apr 14, 2023
8fcb1b1
Update Teilor.fun.cpp
ZhestkovaAnastasia May 12, 2023
419b253
Add files via upload
ZhestkovaAnastasia Jun 8, 2023
4ed9352
Delete Jordan_Gauss_lab3 directory
ZhestkovaAnastasia Jun 8, 2023
003c23d
Add files via upload
ZhestkovaAnastasia Jun 8, 2023
709e953
Update Matrix.h
ZhestkovaAnastasia Jun 8, 2023
51140f5
Update Solver.h
ZhestkovaAnastasia Jun 8, 2023
662c4a4
Update Vector.h
ZhestkovaAnastasia Jun 8, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 31 additions & 0 deletions Jordan_Gauss/Jordan_Gauss.sln
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.3.32804.467
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Jordan_Gauss", "Jordan_Gauss\Jordan_Gauss.vcxproj", "{708C8740-9A13-4196-B3A6-54D86BF16D22}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{708C8740-9A13-4196-B3A6-54D86BF16D22}.Debug|x64.ActiveCfg = Debug|x64
{708C8740-9A13-4196-B3A6-54D86BF16D22}.Debug|x64.Build.0 = Debug|x64
{708C8740-9A13-4196-B3A6-54D86BF16D22}.Debug|x86.ActiveCfg = Debug|Win32
{708C8740-9A13-4196-B3A6-54D86BF16D22}.Debug|x86.Build.0 = Debug|Win32
{708C8740-9A13-4196-B3A6-54D86BF16D22}.Release|x64.ActiveCfg = Release|x64
{708C8740-9A13-4196-B3A6-54D86BF16D22}.Release|x64.Build.0 = Release|x64
{708C8740-9A13-4196-B3A6-54D86BF16D22}.Release|x86.ActiveCfg = Release|Win32
{708C8740-9A13-4196-B3A6-54D86BF16D22}.Release|x86.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {253A591D-9280-4E6D-8BA5-F848CDED7A9A}
EndGlobalSection
EndGlobal
29 changes: 29 additions & 0 deletions Jordan_Gauss/Jordan_Gauss/Jordan_Gauss.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
#include <iostream>
#include <clocale>
#include "Matrix.h"
#include "Solver.h"
#include "Vector.h"

using namespace std;

int main()
{
setlocale(LC_ALL, "Russian");
size_t n;
cout << "Введите размерность вектора и квадратной матрицы: ";
cin >> n;

int a;
cout << "Выберите тип данных:\n 1. float\n 2. double\n";
cin >> a;

switch (a) {
case 1: {
solver<float>(n);
break; }
case 2: {
solver<double>(n);
break; }
}
return 0;
}
90 changes: 90 additions & 0 deletions Jordan_Gauss/Jordan_Gauss/Matrix.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
#pragma once
#include<iostream>
#include "Vector.h"

using namespace std;

template <typename T>
class Matrix {
T** mas;
size_t size;
public:
Matrix(size_t size)
{
this->size = size;
mas = new T * [size];

for (int i = 0; i < size; i++)
mas[i] = new T[size + 1];
}

Matrix(const Matrix<T>& m)
{
size = m.size;
mas = new T * [size];

for (int i = 0; i < size; i++)
mas[i] = new T[size + 1];

for (int i = 0; i < size; i++)
for (int j = 0; j < size + 1; j++)
mas[i][j] = m.mas[i][j];
}


void Set_Matrix()
{
for (int i = 0; i < size; i++)
for (int j = 0; j < size; j++)
cin >> mas[i][j];
}

T Get_Matrix(int i, int j)
{
return mas[i][j];
}

void extended_matrix(Vector<T> b) //создание расширенной матрицы
{
for (int i = 0; i < size; i++)
mas[i][size] = b.Get_Vector(i);
}

void new_value_matrix(int i, int j, T new_val) //присвоить новое значение
{
mas[i][j] = new_val;
}

void swap_elem(int i1, int i2)
{
T w;
for (int j = 0; j < size + 1; j++)
{
w = mas[i1][j];
mas[i1][j] = mas[i2][j];
mas[i2][j] = w;
}
}

void print_matrix()
{
for (int i = 0; i < size; i++) {
for (int j = 0; j < size; j++)
{
cout << mas[i][j] << " ";
}
cout << "|" << mas[i][size] << "\n";
}
cout << "\n";
}

~Matrix()
{
if (size > 0) {
for (int i = 0; i < size; i++)
delete[] mas[i];
delete[] mas;
size = 0;
}
}
};
115 changes: 115 additions & 0 deletions Jordan_Gauss/Jordan_Gauss/Solver.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
#pragma once
#include <iostream>
#include "Vector.h"
#include "Matrix.h"

using namespace std;

bool check_null(float x)
{
float eps = 10e-6f;
if (abs(x) < eps) return true;
return false;
}
bool check_null(double x)
{
double eps = 10e-16;
if (abs(x) < eps) return true;
return false;
}

template <typename T>
void print_res(int size, Matrix<T> A)
{
T* res = new T[size];
for (int i = 0; i < size; i++)
res[i] = 0;

bool flag = true;

for (int i = 0; i < size; i++)
{
if (A.Get_Matrix(i, i) == 1)
{
for (int j = 0; j < size; j++)
if (j != i)
res[i] -= A.Get_Matrix(i, j);
res[i] += A.Get_Matrix(i, size);
if (check_null(res[i])) res[i] = 0;
}
else
if (check_null(A.Get_Matrix(i, i)))
{
if (check_null(A.Get_Matrix(i, size))) //если переменная xi является свободной, присваиваем значение 1
{
res[i] = 1;
cout << "Свободной переменной является x" << i + 1 << endl;
}
else
{
cout << "Нет решения, так как матрица несовместна\n";
flag = false;
break;
}
}
}
if (flag)
{
for (int i = 0; i < size; i++)
cout << "x" << i + 1 << " = " << res[i] << endl;
}

}

template <typename T>
void solver(size_t size)
{
Matrix <T>A(size);
cout << "Введите матрицу построчно: \n";
A.Set_Matrix();

Vector <T>b(size);
cout << "Введите вектор: \n";
b.Set_Vector();

A.extended_matrix(b);

int max_index;
for (int k = 0; k < size; k++)
{
max_index = k;
for (int i = k + 1; i < size; i++)
{
if (abs(A.Get_Matrix(max_index, k)) > abs(A.Get_Matrix(i, k)))
max_index = k;
else max_index = i;
}

if (check_null(A.Get_Matrix(max_index, k))) //если макс элемент равен нулю, то переходим на следующий столбец
break;

T del;
for (int i = 0; i < size; i++)
{
del = A.Get_Matrix(i, k) / A.Get_Matrix(max_index, k);
for (int j = 0; j < size + 1; j++)
{
if (i != max_index)
{
if (check_null(A.Get_Matrix(i, j) - A.Get_Matrix(max_index, j) * del))
A.new_value_matrix(i, j, 0);
else A.new_value_matrix(i, j, A.Get_Matrix(i, j) - A.Get_Matrix(max_index, j) * del);
if (j == k)
A.new_value_matrix(i, j, 0);
}
}
del = A.Get_Matrix(max_index, k);
for (int j = 0; j < size + 1; j++)
A.new_value_matrix(max_index, j, A.Get_Matrix(max_index, j) / del);
}
if (max_index != k)
A.swap_elem(max_index, k);
A.print_matrix();
}
print_res(size, A);
}
44 changes: 44 additions & 0 deletions Jordan_Gauss/Jordan_Gauss/Vector.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
#pragma once
#include <iostream>

using namespace std;

template <typename T>
class Vector {
size_t size;
T* mas;
public:
Vector(size_t size)
{
this->size = size;
mas = new T[size];
for (int i = 0; i < size; i++)
mas[i] = 0;
}

Vector(const Vector<T>& v)
{
size = v.size;
mas = new T[size];
for (int i = 0; i < size; i++)
mas[i] = v.mas[i];
}

void Set_Vector()
{
for (int i = 0; i < size; i++)
cin >> mas[i];
cout << "\n";
}

T Get_Vector(const int ind)
{
return mas[ind];
}

~Vector()
{
delete[]mas;
size = 0;
}
};
Loading