Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > базисные и опорные решения СЛАУ


Автор: Веталька 24.1.2010, 21:35
подскажите как связать это с решением СЛАУ методом Жордана-Гаусса?
тоисть заставить искать базисные и опорные решения
Код

#include "stdafx.h"
#include <vector>
#include <iostream>
#include <conio.h>
#include <stdlib.h>

using namespace std;

void main()
{
    int n, m;
    cin>>n>>m;
 vector <vector <double> > sist(n, vector <double> (m));
    int i, j, k, p, pos, q, i1, j1, j2, x, x1, y, y1=0;
 double max, g, k1, p1, pos1;
 //double arr[n][m];
 
 for (i=0; i<n; i++)
        for (j=0;j<m; j++)
            cin>>sist[i][j]; 
 for (k=0; k<m-1; k++)
    {
        p=q=k;
        max=sist[k][k];
        for (i=k; i<n; i++)
            for (j=k; j<m-1; j++)
                if (abs(sist[i][j])>max)
                {
                    max=sist[i][j];
                    p=i;
                    q=j;
                }

        for (i=0; i<n; i++)
        {
            pos1=sist[i][k];
            sist[i][k]=sist[i][q];
            sist[i][q]=pos1;
        }
        for (j=0; j<m; j++)
        {
            pos1=sist[k][j];
            sist[k][j]=sist[p][j];
            sist[p][j]=pos1;
        }
 }
 for (i=0; i<n; i++){x1=0;
  for (j=0; j<m; j++){
   if (sist[i][j]==0) {
    x1++;
   if (x1>=m){ 
    y1++;
    /*vector <vector <double> > basis(n-y1, vector <double> (n-y1));
    for (i1=0; i1<n-y1; i1++){
     for (j1=0; j1<n-y1; j1++){
      basis[i1][j1]=sist[i1][j1];
     }
    }*/
   }
   }
   if (i==j && sist[i][j]!=0){
    pos=i;
    g=sist[pos][pos];
    for (i1=0; i1<n; i1++){
      //if (i1!=pos){
        p1=sist[i1][pos];
        for (j1=pos; j1<m; j1++){
         if (i1!=pos) {
         k1=sist[pos][j1]*p1/sist[pos][pos];
         sist[i1][j1]=sist[i1][j1]-k1;
        }else sist[i1][j1]=sist[i1][j1]/g;
      }
      //else for (j2=0; j2<m; j2++)sist[i1][j2]=sist[i1][j2]/g;
     }
   }
   
  }
 }
 cout<<endl<<endl;
 if (y1==0)
    for (i=0; i<n; i++){
            for (j=0; j<m; j++)
                cout<<sist[i][j]<<" ";
            cout<<endl;
    }
 if (y1>0){  
  cout<<"yo moe"<<endl<<endl;
 }
    cout<<endl;  
    getch();
}



P.S. понимаю что повтор, но все-таки так больше шансов быть замеченым

Автор: Rodman 24.1.2010, 22:22

M
Rodman
Модератор: Название темы должно содержать язык написания!

Автор: Веталька 24.1.2010, 22:33
извиняюсь, просмотрел, язык С++

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)