Добавил:
SSU_CSIT
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:методы вычислений Поплавский / Metod_Gaussa_Opredelitel
.cpp//#include <iostream>
//
//using namespace std;
//
//int main() {
// setlocale(LC_ALL, "RUS");
// double tmp, d;
// cout << "Введите размер массива: ";
// int n;
// cin >> n;
// double** a = new double* [n];
//
// for (int i = 0; i < n; i++)
// a[i] = new double[n];
//
// cout << "Введите саму матрица\n" << endl;
// for (int i = 0; i < n; i++) {
// for (int j = 0; j < n; j++) {
// cout << "Введите [" << i << "][" << j << "]: ";
// cin >> a[i][j];
// }
// cout << endl;
// }
//
// for (int k = 0; k < n - 1; k++)
// for (int i = k + 1; i < n; i++) {
// tmp = -a[i][k] / a[k][k];
//
// for (int j = 0; j < n; j++)
// a[i][j] += a[k][j] * tmp;
// }
//
// cout << "\nМатрица методом Гаусса:\n\n";
// cout.precision(2);
// for (int i = 0; i < n; i++) {
// for (int j = 0; j < n; j++) {
// cout.width(8);
// cout << fixed << a[i][j] << " ";
// }
// cout << "\n";
// }
//
// d = 1;
// for (int i = 0; i < n; i++)
// d *= a[i][i];
//
// cout << fixed << "\nОпределитель матрицы: " << d << "\n";
// for (int i = 0; i < n; i++)
// delete[] a[i];
//
// system("pause");
// return 0;
//}
//
// e = 0.000001
// n = 4
// sol = np.zeros(n)
// beta = np.zeros(n)
// z = np.zeros(n)
// old = np.zeros(n)
// alpha = np.zeros((n, n))
// m = 1
// variant = 25
// v = []
// a = np.zeros((n, n), dtype = float)
// for i in range(n) :
// for j in range(n) :
// if i == j :
// a[i][j] = variant + i + j
// v.append(a[i][j])
// for i in range(n) :
// for j in range(n) :
// if i != j :
// a[i][j] = a[i][i] / 100
// b = a.dot(v)
// print("\nИсходная матрица А\n", a, sep = '\n')
// print("\nВектор слобец b\n", b, sep = '\n')
// for i in range(n) :
// for j in range(n) :
// if i == j : alpha[i][j] = 0
// else : alpha[i, j] = -a[i][j] / a[i][i]
// for i in range(n) :
// beta[i] = b[i] / a[i][i]
// for j in range(n) :
// for i in range(n) :
// z[j] += abs(alpha[i][j])
// m = z[0]
// for i in range(n) :
// if z[i] > m: m = z[i]
// if m >= 1 : print("Метод простых итераций не сходится")
// else :
// old = beta
// for i in range(n) :
// for j in range(n) :
// sol[i] = sol[i] + alpha[i][j] * old[i]
// sol[i] += beta[i]
// while e > 0:
// old = sol
// for i in range(n) : sol[i] = 0
// for i in range(n) :
// for j in range(n) :
// sol[i] += alpha[i][j] * old[i]
// sol[i] += beta[i]
// if Uslovie(sol, old) :
// print("\nВектор x:\n", sol)
// Break
// def Uslovie(a, b) :
// flag = True
// norma = 0
// jin = np.zeros(n)
// for i in range(n) :
// jin[i] = a[i] - b[i]
// for i in range(n) :
// norma += abs(jin[i])
// if norma > e * (1 - m) / m: flag = False
// return flag
Соседние файлы в папке методы вычислений Поплавский