Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "pch.h"
- #include <iostream>
- #include <time.h>
- using namespace std;
- int n;
- double eps = 0.0001;
- bool converge(double *xk, double *xkp)
- {
- double norm = 0;
- for (int i = 0; i < n; i++)
- norm += (xk[i] - xkp[i])*(xk[i] - xkp[i]);
- return (sqrt(norm) < eps);
- }
- int main()
- {
- double a[100][100];
- double b[100];
- double x[100];
- double p[100];
- cin >> n;
- for (int i = 0; i < n; i++) {
- x[i] = 0;
- }
- for (int i = 0; i < n; i++) {
- for (int j = 0; j < n; j++) {
- cin >> a[i][j];
- }
- cin >> b[i];
- }
- for (int i = 0; i < n; i++) {
- int pos = 0;
- for (int j = 0; j < n; j++) {
- if (a[pos][i] < a[j][i]) {
- pos = j;
- }
- }
- double z[100];
- for (int j = 0; j < n; j++) {
- z[j] = a[i][j];
- a[i][j] = a[pos][j];
- a[pos][j] = z[j];
- }
- double g;
- g = b[i];
- b[i] = b[pos];
- b[pos] = g;
- }
- do
- {
- for (int i = 0; i < n; i++)
- p[i] = x[i];
- for (int i = 0; i < n; i++)
- {
- double var = 0;
- for (int j = 0; j < i; j++)
- var += (a[i][j] * x[j]);
- for (int j = i + 1; j < n; j++)
- var += (a[i][j] * p[j]);
- x[i] = (b[i] - var) / a[i][i];
- }
- } while (!converge(x, p));
- for (int i = 0; i < n; i++) {
- cout << x[i] << endl;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement