Rozwiazywanie rownan metoda Gaussa

0

Witam,

Czy moglby ktos sluzyc rada (najlepiej kodem) przy tworzeniu programu do rozwiązywanie układów równań algebraicznych liniowych metoda eliminacji Gaussa ? Chodziloby o program dzialajacy sekwencyjnie oraz rownolegle (MPI). Moze ktos mialby gotowego stwora ?

Bede zobowiazany [soczek]

0

Może to ci się przyda

/*uklad_rownan_liniowych*/
#include <stdio.h>
#include <iostream.h>
#include <conio.h>
float a[9][10];
float x[9];
int i,j,h,h1,n,n1;
float s,t,aij;
void main()
{
  cout<<"o\t\t UKLAD ROWNAN LINIOWYCH \t\t\o\n";
  cout<<"postaci\n";
  cout<<"a11X1+a12X2+...+a1nXn=a1,n+1\n";
  cout<<"a21X1+a22X2+...+a2nXn=a2,n+1\n";
  cout<<".............................\n";
  cout<<"an1X1+an2X2+...+annXn=an,n+1\n";
  cout<<"uklad rozwiazujemy metoda eliminacji Gaussa\n";
  cout<<"ilosc rownan n<=10\n";
  cout<<"oooooooooooooooooooooooooooooooo\n";
  cout<<"wcisnij <enter>\n";
  getchar();
    cout<<"podaj ilosc rownan n\n";
    cin>>n;
    n=n-1;
    n1=n+1; 
    cout<<"podaj kolejne wspolczynniki aij\n";
    cout<<"w/g schematu a11,a12,...a1n,(a1,n+1)\n";
    cout<<"a21,a22,...,a2n,(a2,n+1)\n";

     for(i=0;i<=n;i++)
      {
        for(j=0;j<=n1;j++) 
       {
        cin>>aij;
        a[i][j]=aij;
       }
      }

     for(i=0;i<=n;i++)
      { 
        for(j=0;j<=n1;j++)    
         cout<<"a["<<i<<"]"<<"["<<j<<"]"<<"="<<a[i][j]<<"\n";
      }
   cout<<"wcisnij <enter>\n";
   getchar();
     for(h=0;h<=n;h++)
     {
       s=a[h][h];
       h1=h+1;
        for(j=h1;j<=n1;j++)
         {
          t=a[h][j]; 
          t=t/s;
          a[h][j]=t;
           for(i=h1;i<=n;i++) 
            a[i][j]=a[i][j]-a[i][h]*t;
          }
       }
      for(h=n;h>=0;h--) 
       { 
        s=a[h][n1];
         for(j=h+1;j<=n;j++) 
           s=s-a[h][j]*x[j];
        x[h]=s;
       } 
      for(h=0;h<=n;h++) 
       cout<<"x["<<h<<"]"<<"="<<x[h]<<"\n";
   getch();

}

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