Facebook
From ja, 6 Days ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 26
  1. // INT1.cpp : Defines the entry point for the console application.
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include <iostream>
  6. #include <cmath>
  7.  
  8. using namespace std;
  9. const double eps = 1e-12;
  10. double Ui(double x,int i)
  11. {
  12.         return pow(x, i);
  13. }
  14.  
  15.  
  16.         bool gauss(int n, double ** AB, double * X)
  17.         {
  18.                 double m;
  19.                 double s;
  20.  
  21.                 for (int i = 0; i < n - 1; i++)
  22.                 {
  23.                         for (int j = i + 1; j < n; j++)
  24.                         {
  25.                                 if (fabs(AB[i][i]) < eps)
  26.                                 {
  27.                                         return false;
  28.                                 }
  29.  
  30.                                 m = -AB[j][i] / AB[i][i];
  31.  
  32.                                 for (int k = i + 1; k <= n; k++)
  33.                                 {
  34.                                         AB[j][k] += m * AB[i][k];
  35.                                 }
  36.                         }
  37.                 }
  38.  
  39.                 for (int i = n - 1; i >= 0; i--)
  40.                 {
  41.                         s = AB[i][n];
  42.  
  43.                         for (int j = n - 1; j >= i + 1; j--)
  44.                         {
  45.                                 s -= AB[i][j] * X[j];
  46.                         }
  47.                         if (fabs(AB[i][i]) < eps)
  48.                         {
  49.                                 return false;
  50.                         }
  51.                         X[i] = s / AB[i][i];
  52.                 }
  53.                 return true;
  54.         }
  55.         void Gaus(double **A)
  56.         {
  57.                 double **AB;
  58.         double *X;
  59.  
  60.  
  61.         int n;
  62.         cout << "Podaj liczbe rownan: " << endl;
  63.         cin >> n;
  64.  
  65.         AB = new double *[n];
  66.  
  67.         X = new double[n];
  68.  
  69.         cout << endl;
  70.        
  71.  
  72.         for (int i = 0; i < n; i++)
  73.         {
  74.                 AB[i] = new double[n + 1];
  75.         }
  76.  
  77.         for (int i = 0; i < n; i++)
  78.         {
  79.                 for (int j = 0; j <= n; j++)
  80.                 {
  81.                         AB[i][j] = A[i][j];
  82.                 }
  83.         }
  84.  
  85.         cout << endl;
  86.         cout << "wynik: " << endl;
  87.  
  88.         if (gauss(n, AB, X))
  89.         {
  90.                 for (int i = 0; i < n; i++)
  91.                 {
  92.                         cout << "x" << i + 1 << " = " << X[i] << endl;
  93.                 }
  94.         }
  95.         else
  96.         {
  97.                 cout << "dzielenie przez 0" << endl;
  98.         }
  99.         }
  100.  
  101.  
  102.  
  103. int main()
  104. {
  105.         const int i = 5;
  106.         double Xi[i+1] = { 1.5 ,2 ,2.5,3.5,3.8,4.1 };
  107.         double Yi[i+1] = { 2,5,-1,0.5,3,7 };
  108.         double *Ai = new double[6];
  109.  
  110.         double **U = new double *[i+1];
  111.         for (size_t i = 0; i < i+1; i++)
  112.         {
  113.                 U[i+1] = new double[i + 1];
  114.         }
  115.         for (size_t i = 0; i < 6; i++)
  116.         {
  117.                 for (size_t j = 0; j < 6; j++)
  118.                 {
  119.                         U[i][j] = Ui(Xi[i], j);
  120.                         cout << U[i][j] << "\t";
  121.                 }
  122.                 cout << Yi[i];
  123.                 cout << "\n";
  124.         }
  125.         gauss(i,U,Ai);
  126.         Gaus(U);
  127.        
  128.        
  129.  
  130.  
  131.  
  132.  
  133.         return 0;
  134. }
  135.  
  136.