Đánh giá, nhận xét, review các công ty tuyển dụng
Trang 1 trên tổng số 4 123... Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 39 kết quả

Đề tài: Giải n hệ phương trình tuyến tính

  1. #1
    Ngày gia nhập
    01 2011
    Bài viết
    34

    Thumbs down Giải n hệ phương trình tuyến tính

    Bài không chạy được nhưng debug cũng không báo lỗi
    Cả nhá check lại giúp tớ nhá, mong nhận được sự giúp đỡ
    Chương trình giải n hệ tuyến tính
    input.txt
    2 // số hệ cần giải
    1 // phương trình 1 ẩn
    1 1 // hệ số của phương trình 1 ẩn
    2 //phương trình 2 ẩn
    1 1 1 // hệ số của phương trình 2 ẩn
    1 1 2 //

    output.txt
    Test 1:
    1.00
    Test 2:
    The system has no solution
    */

    Code:
    #include<iostream>
    #include<cmath>
    #include<iomanip>
    #include<fstream>
    
    
    using namespace std;
    
    const int MAX = 100; //khai bao hang 
    
    //khai bao nguyen mau cac ham 
    
    double maTrix_A(double A[][MAX], double n);
    
    double maTrix_B(double B[], double n);
    
    //double output_maTrix(double A[][MAX], double B[], double n);
    
    int Gauss(int  n);
    
    double Swap(double& a, double& b);
    
    //----------------------------------------------------------------------
    //ham main
    //--------------------------------------------------------------------
    int main()
    {
        ifstream in_file("input.txt"); //tao doi tuong co ten in_file de doc du lieu
        ofstream out_file("output.txt"); // tao doi tuong co ten out_file de ghi du lieu
        
        if ( !in_file.bad()){
             cout << " File bai tap khong ton tai\n";
             exit(1); 
        }
        int n;
        double A[MAX][MAX], B[MAX],X[MAX];
        cout << "So he phuong trinh can giai la:";
        in_file >> n; //doc du lieu vao file 
        
        while (n<1 || n>20){            //test dieu kien so phuong trinh trong he
            cout << "\n Moi ban nhap lai so phuong trinh trong [1,20]:";
            out_file << "\n Moi ban nhap lai so phuong trinh trong [1,20]:";
            in_file >> n;
        }
        
        for (int i=1; i<=n ;i++){
            
            cout << "\n Nhap he so cua matrix A:\n";
            maTrix_A( A,  n);
        
            cout << " Nhap he so cua matrix B:\n";
            maTrix_B( B,  n);
            cout << endl;
        }
        for (int i=1; i<n; i++){
             Gauss( n);
        }
        //cout << "He so cua cac phuong trinh la:\n";
        //output_maTrix( A,  B,  n);
        
       
        
        
        system("pause");
        return 0;
    }
    //----------------------------------------------------------------------------
    //end main
    //--------------------------------------------------------------------------
    
    //Dinh nghia ham maTrix_A
    
    double maTrix_A(double A[][MAX], double n)
    {
        ifstream in_file("input.txt");
         ofstream out_file("output.txt");    
        int i,j;
        for (i=1; i<=n; i++){
            for (j=1; j<=n; j++){
               // cout << "A[" << i << j << "]=";
                //cin >> A[i][j];
                in_file >> A[i][j];      
            }
        }  
    }
    
    //Dinh nghia ham nhap maTrix_B
    
    double maTrix_B(double B[], double n)
    {
         ifstream in_file("input.txt");  
         ofstream out_file("output.txt"); 
         int i;
         for (i=1; i<=n; i++){
           // cout << "B[" << i << "]=";
            //cin >> B[i];
            in_file >> B[i];
        }
    }
    
    /*//Dinh nghia ham in he so cua he phuong trinh output_maTrix
    
    double output_maTrix(double A[][MAX], double B[], double n)
    {
         int i,j;
         for (i=1; i<=n ; i++){
             for (j=1; j<=n; j++){
                 cout << setw(7) << A[i][j]; 
             }
             cout << setw(3) <<"|";
             cout << setw(5) << B[i] ;
             cout << "\n";
         }
        
    }*/
    
    //Dinh nghia ham Swap
    double Swap(double& a, double& b)
    {
         double temp;
         temp = a;
         a = b;
         b = temp;  
    }
    
    //Dinh nghia ham Gauss
    int Gauss(int n)
    {
         ifstream in_file("input.txt");  
         ofstream out_file("output.txt"); 
         
         int i=0, j, done=0,m, k;
         double A[MAX][MAX], B[MAX],X[MAX];
         double max,c;
         cout<<"\nTinh nghiem cua he phuong trinh AX=B: ";
         while (!done){
             if (A[i][i] == 0){
                 max = 0;
                 m = i;
                 for (k=i+1; k<n; k++)
                      if (max < fabs(A[k][i])){
                          m = k;
                          max = fabs(A[k][i]); 
                      }
                 if (m != i){
                      for (j=i; j<n; j++){
                    /*      c = A[i][j];
                          A[i][j] = A[m][j];
                          A[m][j] = c;*/
                          Swap(A[i][j],A[m][j]);
                      }
                      /*c = B[i];
                      B[i] = B[m];
                      B[m] = c;*/
                      Swap(B[i],B[m]);
                 }
                 if (m == i)
                      done = 1;
              } 
              if (A[i][i] != 0){
                 c = 1/A[i][i];
                 for (j=i; j<n; j++) 
                     A[i][j] = A[i][j] * c;
                 B[i] = B[i] * c;
                 for (k=i+1; k<n; k++){
                     for (j=i+1; j<n; j++) 
                     A[k][j] = A[k][j] - A[i][j]*A[k][i];
                     B[k] = B[k] - B[i] * A[k][i];
                     A[k][i] = 0;
                 }
              }
              cout  << setiosflags(ios::showpoint) << setprecision(6) ;
              //cout<<"\nLan khu hang "<< i+1;
              //cout<<"\n					\n";
              for (k=0; k<n; k++){
                 cout<<"\n";
                 for (j=0; j<n; j++)
                     cout<< A[k][j]<<"  ";
                 cout<<"= "<< B[k]<<"  ";
              }
              i++;
              if (i>=n)
                 done = 1;
          }
          if(A[n-1][n-1]==0){
      	      if(B[n-1]==0)
                  out_file << "\n The system has an infinitive solutions \n";
      	      else 
    	          out_file << "\n The system has no solution \n";
          }
          else{
      	      if (i >= n){
       		      X[n-1] = B[n-1]/A[n-1][n-1];
       		      for (i=n-2; i>=0; i--){
             		   X[i] = 0;
             		   for (j=n-1; j>i; j--)
               		   B[i] = B[i] - A[i][j] * X[j];
             		   X[i] = B[i]/A[i][j];
    		      }
       		      cout<<"\n NGHIEM CUA HE DA CHO  :\n";
       		      cout<<"                             \n";
      		      for (i=0; i<n; i++){
    	   			  cout<<"X["<<i+1<<"]= "<<X[i];
    	   			  out_file << X[i] << endl;
          			  cout<<"\n";
       			  }
      	      }
          }
    }

  2. #2
    Ngày gia nhập
    09 2010
    Nơi ở
    Hà Nội
    Bài viết
    382

    code giải hệ phương trình tuyến tình:
    C Code:
    1. #include <stdio.h>
    2. #include <conio.h>
    3.  
    4. int i,j,n,m,k,dem=0;
    5. double x,tam,a[10][11],b[10];
    6.  
    7. void nhap();
    8. void xuat();
    9. void giai();
    10.  
    11. //----------- NHAP HE PHUONG TRINH ----------------------------
    12. void nhap(void)
    13. {
    14.  printf("Nhap n = "); scanf("%d",&n);
    15.  for(i=0;i<n;i++)
    16.     {
    17.     for(j=0;j<n;j++)
    18.         {
    19.         printf(" a[%d][%d] = ",i+1,j+1);
    20.         scanf("%lf",&a[i][j]);
    21.         }
    22.      printf(" b[%d] = ",i+1);
    23.      scanf("%lf",&b[i]);
    24.     }
    25. }
    26.  
    27. //----------- XUAT HE PHUONG TRINH ------------------------------
    28. void xuat(void)
    29. {
    30.  for(i=0;i<n;i++)
    31.     {
    32.      for(j=0;j<=n;j++)
    33.         {
    34.          if(j==n) printf("%5.2lf",b[i]);
    35.          else printf("%5.2lf",a[i][j]);
    36.         }
    37.      printf("\n");
    38.     }
    39. }
    40.  
    41. //----------- GIAI HE PHUONG TRINH ---------------------------------
    42. void giai(void)
    43. {
    44. //Tao ma tran lien ket--------
    45.  for(i=0;i<n;i++)
    46.      {
    47.     a[i][n]=b[i];
    48.    }
    49. //Bat dau thuat toan Gauss-Jordan de giai he phuong trinh.------------
    50. //Dung phep BDSC dua Aij ve ma tran cheo.
    51.  for(j=0;j<n;j++)
    52.     {
    53.     for(i=n-1;i>=j;i--)
    54.         {
    55.         if(a[i][j]==0) continue;//Neu phan tu a bang 0 thi tang i.
    56.         if((i>j)&&(a[i][j]!=0))
    57.             {
    58.             k=i-1;
    59.             while((k>=j)&&(a[k][j]==0)) k--;//Xet cac phan tu a khac 0 tren cung cot j
    60.             if(k<j)
    61.                 {
    62.                 //Doi cho dong thu i va j cho ca ma tran mo rong.
    63.                 for(m=0;m<=n;m++)
    64.                     {
    65.                     tam=a[i][m];
    66.                     a[i][m]=a[j][m];
    67.                     a[j][m]=tam;
    68.                     }
    69.                 }
    70.             if((k>=j)&&(k>=0))
    71.                 {
    72.                 x=-a[i][j]/a[k][j];
    73.                 //Nhan dong thu k cho x roi cong vao dong thu i.
    74.                 for(m=0;m<=n;m++)
    75.                     a[i][m]+=a[k][m]*x;
    76.                 }
    77.             }
    78.         }
    79.     }
    80.  for(j=n-1;j>=0;j--)
    81.     {
    82.     for(i=0;i<=j;i++)
    83.         {
    84.         if(a[i][j]==0) continue;
    85.         if((i<j)&&(a[i][j]!=0))
    86.             {
    87.             k=i+1;
    88.             while((k<=j)&&(a[k][j]==0)) k++;
    89.             if((k<=j)&&(k<=n))
    90.                 {
    91.                 x=-a[i][j]/a[k][j];
    92.                 //Nhan dong thu k voi x roi cong vao dong thu i.
    93.                 for(m=0;m<=n;m++)
    94.                     a[i][m]+=a[k][m]*x;
    95.                 }
    96.             }
    97.         }
    98.     }
    99. //Ket thuc qua trinh Gauss.
    100.  for(i=0;i<n;i++)
    101.     if(a[i][i]==0)
    102.         {
    103.          printf("\nHe phuong trinh VSN");
    104.          dem++;
    105.          return;
    106.         }
    107.  for(i=0;i<n;i++)
    108.     {
    109.      b[i]=a[i][n]/a[i][i];
    110.     }
    111. }
    112.  
    113. //----------------- MAIN ----------------------------------------------
    114. void main()
    115. {
    116.  clrscr();
    117.  nhap();
    118.  printf("\nHe phuong trinh vua nhap:\n");
    119.  xuat();
    120.  giai();
    121.  printf("\nNghiem duy nhat cua phuong trinh la:");
    122.  if(dem==0)
    123.     {
    124.       for(i=0;i<n;i++)
    125.         {
    126.           printf("\n x%d = %5.2lf",i+1,b[i]);
    127.         }
    128.     }
    129.  getch();
    130. }
    Bạn tham khảo nha!

    skype: hvphu2010
    Yahoo: hvphu2010
    Sdt: 0129 609 4567

  3. #3
    Ngày gia nhập
    01 2011
    Bài viết
    34

    thanks bạn nhiều nhưng tớ muốn hỏi giải n hệ phương trình tuyến tính mà.

  4. #4
    Ngày gia nhập
    04 2008
    Nơi ở
    Bốn bề là nhà
    Bài viết
    705

    Bạn tìm hiểu về phương pháp Gauss

  5. #5
    Ngày gia nhập
    01 2011
    Nơi ở
    -Mountain-
    Bài viết
    767

    Trích dẫn Nguyên bản được gửi bởi it92 Xem bài viết
    thanks bạn nhiều nhưng tớ muốn hỏi giải n hệ phương trình tuyến tính mà.
    cái này bạn có thể dùng một vòng lặp for. mình cũng đang làm bài này. nếu cần
    mình có thể share cho bạn.. mình chỉ còn ghép vào giải hệ n ẩn nữa là xong
    @tanglung: ý của bạn ấy là giải n hệ

  6. #6
    Ngày gia nhập
    04 2008
    Nơi ở
    Bốn bề là nhà
    Bài viết
    705

    Mặc định Giải n hệ phương trình tuyến tính

    @tanglung: ý của bạn ấy là giải n hệ
    Ủa vậy để giải 1 hệ phương trình tuyến tính không dùng phương pháp khử Gauss thì dùng cách chi vậy?

  7. #7
    Ngày gia nhập
    04 2011
    Bài viết
    79

    Trích dẫn Nguyên bản được gửi bởi tanglung117 Xem bài viết
    Ủa vậy để giải 1 hệ phương trình tuyến tính không dùng phương pháp khử Gauss thì dùng cách chi vậy?
    anh hiểu nhầm ý bạn ấy roài , ý của bạn đó là nhập vào n hệ phương trình tuyến tính , chứ ko phải là 1 hệ phương trình tuyến tính !
    ví dụ 1 file input_txt có các chứa 10 hệ và sau đó giải 10 hệ đó cùng 1 lúc thôi !
    http://http://www.matcuoi.com/smilies/7onion68.gif"]http://http://www.matcuoi.com/smilies/7onion68.gif

  8. #8
    Ngày gia nhập
    04 2008
    Nơi ở
    Bốn bề là nhà
    Bài viết
    705

    Mình nghĩ là mình hiểu ý của chủ topic.
    Nhưng m đang thắc mắc là để giải "1" hpt tuyến tính thì bạn đó dùng cách gì?

  9. #9
    Ngày gia nhập
    01 2011
    Nơi ở
    -Mountain-
    Bài viết
    767

    Trích dẫn Nguyên bản được gửi bởi tanglung117 Xem bài viết
    Mình nghĩ là mình hiểu ý của chủ topic.
    Nhưng m đang thắc mắc là để giải "1" hpt tuyến tính thì bạn đó dùng cách gì?
    đây là đề bài của bọn mình làm bài tập lớn mà....^^!~. nếu ko làm bằng phép thử gauss còn có mấy cách nữa thì pải
    ở đây là 1 cách
    Attached Files Attached Files

  10. #10
    Ngày gia nhập
    04 2008
    Nơi ở
    Bốn bề là nhà
    Bài viết
    705

    Uh, thì m chỉ "gợi ý" cho chủ topic là dùng phương pháp khử Gauss để giải 1 hpt tuyến tính thôi mà.

Các đề tài tương tự

  1. Giải pt phi tuyến tính bằng pp chia đôi ntn nhỉ?
    Gửi bởi huongthu12a4 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 4
    Bài viết cuối: 24-01-2013, 08:48 PM
  2. Bài tập C Giải bài toán Quy hoạch tuyến tính
    Gửi bởi waitforlove1191 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 0
    Bài viết cuối: 25-10-2012, 08:04 PM
  3. giải phương trình đại số tuyến tính bằng Jacobi
    Gửi bởi hanhsl trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 21-03-2012, 12:09 AM
  4. Code kiểm tra lược đồ quan hệ có nguy cơ xảy ra mâu thuẫn tuyến tuyến tính và phi tuyến
    Gửi bởi computerline trong diễn đàn Dự án & Source code C#, ASP.NET
    Trả lời: 0
    Bài viết cuối: 13-05-2011, 03:56 PM
  5. Giải bất phương trình tuyến tính
    Gửi bởi chuong01 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 4
    Bài viết cuối: 10-08-2010, 02:23 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn