Muszę obliczyć taki układ równań:
macierz TAB:
Kod: Zaznacz cały
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0.89 0.98 0 0 0 0 0 0 0 0 0 0 0 0 0
-1 0 -0.43 0.15 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0.43 0 1 0 0 0 0 0 0 0 0 0 0 0 0
0 -1 -0.89 0 0 1 0 0 0 0 0 0 0 0 0 0 0
0 0 0 -0.98 0 0 0.83 0.98 0 0 0 0 0 0 0 0 0
0 0 0 -0.15 -1 0 -0.55 0.15 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 -0.15 -1 0 0 -0.15 0 0 0 0 0
0 0 0 0 0 0 0.55 0 1 0.55 0 0 0 0 0 0 0
0 0 0 0 0 -1 -0.83 0 0 0.83 1 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 -0.83 0 -0.98 0 0 0 0.98 0
0 0 0 0 0 0 0 0 0 -0.55 0 0.15 -1 0 0 -0.15 0
0 0 0 0 0 0 0 0 0 0 0 0 0 -0.89 0 -0.98 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 -0.43 0 0.15 -1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
Kod: Zaznacz cały
-21.875
15
-15
0
25
0
0
0
0
0
0
0
20
0
0
0
-23.125
Kod: Zaznacz cały
#include<iostream>
#include<cstdio>
#include<fstream>
#include<math.h>
using namespace std;
int main()
{
const int W=17,K=17;
//Wczytywanie danych do tablicy!
double tab[17][17];
int i,j;
ifstream plik;
plik.open("plik.txt");
if(plik.good()==true)
{
for(j=0;j<K;j++)
{
for(i=0;i<W;i++)
{
plik>>tab[j][i];
}
}
plik.close();
}
else
{
cout<<"Nie mozna otworzyc pliku!";
return -1;
}
for(i=0;i<W;i++)
{
cout<<""<<endl;
for(j=0;j<K;j++)
{
if(i==j) cout<<""<<tab[i][j];
}
}
//koniec wczytywanie, teraz metoda Jacobbiego
double s; double w; double X[W]; double B[W]; double XX[K];
cout<<"Wprowadz dane"<<endl;
for(i=0;i<W;i++)
{
cin>>w;
B[i]=w;
}
for(i=0;i<W;i++) {X[i]=0;XX[i]=1;}
for(int k=0;k<5;k++)
{
for(i=0;i<17;i++)
{
double s=0;
for(j=0;j<K;j++)
{
if(j!=i) s+=tab[i][j]*XX[j];
}
X[i]=(B[i]-s)/(tab[i][i]);
XX[i]=X[i];
}
}
//for(i=0;i<W;i++) cout<<""<<X[i]<<endl;
std::ofstream wynik("wynik.txt");
for(i=0; i<W; i++)
{
wynik<<X[i]<<""<<"
";;
}
getchar();
return 0;
}
Oto prawidłowe wyniki:
Kod: Zaznacz cały
-21.8750
15.0000
34.5783
-46.7089
10.1313
45.7747
-14.9641
-34.0352
10.2112
-3.6017
36.3439
-34.0396
-17.5615
40.8407
0
-37.0900
-23.1250