Плагин Auto Complete Tag (Auto Rename Tag и Auto Close Tag) у меня установлен если что.
HTML: Auto Closing Tags
, по умолчанию включён.#include <iostream>
#include <stdint.h>
#include <iomanip>
using namespace std;
void showMatrix(double **A, double *B, int n) {
cout << endl << "==============================================" << endl;
for (int j = 0; j < n; j++) {
for (int i = 0; i < n; i++) {
cout << setw(10) << A[j][i] << " ";
}
cout << " = " << setw(10) << B[j] << endl;
}
}
int main() {
int n;
cout << "Enter matrix N*N: ";
cin >> n;
//matrix A input
cout << "Enter matrix elements: \n";
double** A = new double*[n];
for (int i = 0; i < n; i++) {
A[i] = new double[n];
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
cout << " A [" << i + 1 << "][" << j + 1 << "] = ";
cin >> A[i][j];
}
cout << endl;
}
//matrix B input
cout << "Enter free elements:\n";
double* B = new double[n];
for (int i = 0; i < n; i++) {
cout << " B [" << "|" << i + 1 << "|" << "] = ";
cin >> B[i];
}
for (int i = 0; i < n - 1; i++) {
showMatrix(A, B, n);
int m = i;
for (int j = i + 1; j < n; j++) {
if (labs(A[m][i]) < labs(A[j][i]))
m = j;
}
if (m > i) {
for (int k = i; k < n; k++) { // k = i ─ не перемещаем "обнулённые" значения; k = 0 ─ перемещаем;
double c = A[m][k];
A[m][k] = A[i][k];
A[i][k] = c;
}
double c = B[m];
B[m] = B[i];
B[i] = c;
}
for (int j = i + 1; j < n; j++) {
double c = -A[j][i] / A[i][i];
for (int k = i; k < n; k++) { // k = i + 1 ─ не обнуляем; k = i ─ обнуляет;
A[j][k] += c * A[i][k];
}
B[j] += c * B[i];
}
}
cout << endl << "=== FINAL ===";
showMatrix(A, B, n);
double* X = new double[n];
int m = n - 1;
X[m] = B[m] / A[m][m];
for (int i = m - 1; i >= 0; i--) {
for (int k = i + 1; k < n; k++) {
B[i] -= X[k] * A[i][k];
}
X[i] = B[i] / A[i][i];
}
cout << endl;
for (int i = 0; i < n; i++) {
cout << "x [" << i + 1 << "] = " << X[i] << "; " << endl;
}
cout << endl;
system("PAUSE");
return 0;
}
Ради интереса решил попробовать и набросал быстренько код на жс (перечисление всех и через данную формулу (заодно проверил её корректность)).
Так вот, я дошёл до данного числа: 8_944_394_323_791_464 (без понятия оно даже произносится), но даже таких значениях оба варианта выполнялись за 0-1мс.
Это просто в подтверждение того, что разница даже на огромных значениях незаметна чуть более, чем полностью.