Prosty układ równań metodą mnożenia przez odwrotność macierzy

0

Witam napisałem prosty program, ale nie zwraca mi prawidłowych wyników i nie wiem o co może chodzić:

#include<cstdio>
#include<fstream>
#include<math.h>

using namespace std;

int main()
{
const int W=17,K=17; int i,j,k; double w; double s;
double A[W][K]; //wczytane liczby
double D[W][K]; // odwrócona macierz A
double X[W]; //wektor wyników
double B[W]; //wektor wyników wprowadzanych


    ifstream plik;
    plik.open("plik1.txt");

    if(plik.good()==true)
    {
        for(j=0;j<K;j++)
        {
           for(i=0;i<W;i++)
           {
              plik>>A[j][i];
           }
        }
    plik.close();
    }
    else
    {
        cout<<"Nie mozna otworzyc pliku!";
        return -1;
    }

    cout<<""<<endl;
    cout<<"Wprowadz dane do wektora B"<<endl;

    for(i=0;i<W;i++)
    {
        cin>>w;
        B[i]=w;
    }

   for(i=0;i<W;i++)
   {
       for(j=0;j<K;j++)
       {
           if(A[i][j]==0) D[i][j]==0;
           else D[i][j]=pow(A[i][j],(-1));
       }
   }

   for(i=0;i<W;i++)
   {
       s=0;
       for(j=0;j<K;j++)
       {
        s+=D[i][j]*B[j];
       }
       X[i]=s;
   }

   for(i=0;i<W;i++){cout<<""<<endl; cout<<""<<X[i]; }
    getchar();
    return 0;
}
 
0

to jest fajne: "pow(A[i][j],(-1))" (złośliwość :-)
to też: "if(A[i][j]==0) D[i][j]==0;" (zwrócenie uwagi)
dzielenie przez "mało" nie tylko przez zero też może powodować nadmiar
czekaj, czekaj, czy odwracasz macierz obliczając odwrotność elementów? e....., siadaj dwa

0

Nie, mam algorytm na odwracanie, wziąłem go w komentarz a ten kawałek został. Działa. Pozdrawiam

1 użytkowników online, w tym zalogowanych: 0, gości: 1