Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <stdlib.h>
- #include <time.h>
- using namespace std;
- vector<double> mnozenie(vector<double> matylda, double liczba){
- for(int i=0; i<matylda.size(); i++)
- matylda[i] = matylda[i]*liczba;
- return matylda;
- }
- vector<double> odejmowanie(vector<double> matylda, vector<double> wladyslaw){
- for(int i=0; i<matylda.size(); i++)
- matylda[i] = matylda[i]-wladyslaw[i];
- return matylda; //matylda - wladyslaw
- }
- int main()
- {
- int t = 100;
- //cin >> t;
- srand(time(NULL));
- int liczba_rownan = 5;
- for(int iterator=0; iterator<t; iterator++)
- {
- //cin >> liczba_rownan;
- vector<vector<double> > macierz;
- vector<double> x;
- int liczba_obiegow = 0;
- for(int i=0; i<liczba_rownan; i++)
- {
- x.push_back((double)(rand()%999));
- }
- for(int i=0; i<liczba_rownan; i++)
- {
- vector<double> usagi;
- double b=0;
- for(int j=0; j<liczba_rownan; j++)
- {
- double sailor_moon = (rand()%999);
- usagi.push_back(sailor_moon);
- b = b+sailor_moon * x[j];
- }
- usagi.push_back(b);
- macierz.push_back(usagi);
- }
- //for(int i=0; i<liczba_rownan; i++)
- //{
- // vector<double> usagi;
- // for(int j=0; j<liczba_rownan+1; j++)
- // {
- // double sailor_moon;
- // cin >> sailor_moon;
- // usagi.push_back(sailor_moon);
- // }
- // macierz.push_back(usagi);
- //}
- vector<vector<double> > eg = macierz;
- vector<double> x_eg;
- for(int i=0; i<eg.size(); i++)
- {
- x_eg.push_back(0);
- }
- for(int i=0; i<eg.size(); i++)
- {
- //szukamy najwiekszego w kolumnie i
- //tylko ostatniej kolumny nie ruszamy
- int najnaj=i;
- for(int j=i; j<eg.size(); j++)
- {
- if(eg[j][i] > eg[najnaj][i])
- najnaj=j;
- }
- eg[i].swap(eg[najnaj]);
- //jej, swapniete
- //teraz jak juz wybralismy najwiekszy element
- //i jest on w eg[i][i] to ten wiersz dzielimy przez ten element
- //robiac w miejscu eg[i][i] jedynke
- eg[i] = mnozenie(eg[i], 1/eg[i][i]);
- //pieknie, mam jedynki. co teraz z nimi?
- // a no trzeba wiersze odejmowac.
- for(int j=i+1; j<eg.size(); j++)
- {
- //matylda-wladyslaw;
- eg[j]=odejmowanie(eg[j], mnozenie(eg[i], eg[j][i]));
- for(int k=0; k<eg.size()+1; k++)
- {
- liczba_obiegow++;
- }
- }
- //super, mamy macierz trojkatna
- }
- cout << "\n";
- for(int i=0; i<eg.size(); i++)
- {
- //for(int j=0; j<eg.size() + 1; j++)
- //{
- // cout << eg[i][j] << " ";
- //}
- //cout << i;
- //cout << "\n";
- }
- x_eg.back() = eg.back().back();
- //ostatniego x-a znamy juz bez kombinowania
- for(int i=eg.size()-2; i>=0; i--)
- {
- //;
- x_eg[i] = eg[i][eg.size()];
- //dajemy mu wartosc b, bedziemy od niej odejmowac
- for(int j=eg.size()-1; j>i; j--)
- {
- x_eg[i] -= x_eg[j] * eg[i][j];
- }
- }
- // cout << "\n";
- // for(int i=0; i<eg.size(); i++)
- // {
- // for(int j=0; j<eg.size() + 1; j++)
- // {
- // cout << eg[i][j] << " ";
- // }
- // cout << "\n";
- // }
- // cout << "\n";
- // for(int i=0; i<x_eg.size(); i++)
- // cout << x_eg[i] << " ";
- //
- // cout << "\n";
- double eg_sr= 0;
- double x_sr=0;
- for(int i=0; i<x.size(); i++)
- {
- eg_sr += abs(x_eg[i]);
- x_sr += abs(x[i]);
- }
- eg_sr = eg_sr/x.size();
- x_sr=x_sr/x.size();
- double bb= abs(eg_sr - x_sr);
- double bw = bb/x_sr;
- //cout << "blad bezwzgledny " << bb << "\n";
- //cout << "blad wzgledny " << bw << "\n\n";
- cout << bw;
- //if(bb == 0 || bw == 0)
- //{
- // iterator = 0;
- //}
- //cout << liczba_rownan << "\t"
- //cout << liczba_obiegow; //<< "\n";
- liczba_rownan+=5;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement