Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 11 kết quả

Đề tài: Tính định thức của ma trận cấp n dùng đệ qui , giúp em với,gấp!!

  1. #1
    Ngày gia nhập
    02 2009
    Bài viết
    4

    Unhappy Tính định thức của ma trận cấp n dùng đệ qui , giúp em với,gấp!!

    Em có một bài toán về tính định thức của ma trận vuông cấp n dùng đệ qui để viết code , em đã viết như thế này , chạy thử mà chưa đúng , suy nghĩ mãi kiểu đệ qui vẫn không ra , mong mọi người post giùm em đoạn code , hoặc sửa code cho em,có chú thích luôn thì tốt quá(viết theo C hoặc C++ cũng được) mong mọi người giúp em với. Cảm ơn thật nhiều!!

    Code:
    int detmt(int A[][100],int n)
    {int x;
    	for(int i=0;i<n;i++)
    		for(int j=0;j<n;j++)
    		  x=A[i][j]*pow(-1,j +1)*detmt(A,n);
    			return x;
    }

  2. #2
    Ngày gia nhập
    03 2009
    Nơi ở
    Hà Nội
    Bài viết
    74

    bạn phải cho 3 biến nhập vào xác định tọa độ của điểm đầu tiên ma trận con và kích thước của nó.rồi đệ quy tiếp tục.sử dụng y hệt trong SGK

    http://ebook.here.vn
    trang web cung cấp đề thi,tài liệu ôn thi đại học.

  3. #3
    Ngày gia nhập
    02 2009
    Bài viết
    4

    vậy là em phải sửa thành thế này
    Code:
    int detmt(int A[][100],int n)
    {int x;
    	for(int i=0;i<n;i++)
    		for(int j=0;j<n;j++)
    		  x=A[0][j]*pow(-1,j +1)*detmt(A,n);
    			return x;
    nhưng vẫn mò mãi chưa ra , mọi người giúp code với ,em bó tay rồi thứ 2 này phải nộp bài rồi. Mà sgk nào vậy minhgiang_hedspi , nói sgk mình ko biết đó là sgk gì hết T_T

  4. #4
    Ngày gia nhập
    03 2009
    Nơi ở
    Hà Nội
    Bài viết
    74

    ơ,sgk toán cao cấp mà.thì bạn thực hiện đệ quy như trong đó là được mà.để mình thử viết lại xem.

    http://ebook.here.vn
    trang web cung cấp đề thi,tài liệu ôn thi đại học.

  5. #5
    Ngày gia nhập
    02 2009
    Bài viết
    4

    tại vì mình kẹt ngay chỗ phần phụ đại số (cái phần nhân cho ma trận loại bỏ dòng k(cố định ) và cột j ấy) , ko biết làm sao ,mong bạn giải giùm mình nha , giải thích càng tốt ko thì code cũng đc mình tự suy ngẫm . sách giáo khoa mà bạn nói là sách nhà xuất bản , tác giả nào vì mình cũng có tham khảo nhưng hông thấy T_T , cảm ơn bạn thật nhiều!!

  6. #6
    Ngày gia nhập
    03 2009
    Nơi ở
    Hà Nội
    Bài viết
    74

    Mặc định Tính định thức của ma trận cấp n dùng đệ qui , giúp em với,gấp!!

    Code:
    //tinh dinh thuc ma tran.
    #include <stdio.h>
    /*
    ham nay thuc hien viec copy ma tran goc vao ma tran con bo di hang thu a, cot thu b
    */
    void copy(float *in,float *out,int n,int a,int b){
        int i,j,l,k;
        for(i=0,l=0;i<n;i++) if(i!=a)
        {
          for(j=0,k=0;j<n;j++) if(j!=b){
             *(out+l*10+k)=*(in+i*10+j);
             k++;
             printf("%.1f ",*(in+i*10+j));
          }
            l++;
            printf("\n");
        }
    }
    /*
    ham tinh dinh thuc voi ma tran nhap vao co kich thuoc n*n
    */
    float dinh_thuc(float *array,int n){
        int i,j=-1;
        float tg=0;
        float tmp[10][10][10];
        if(n==0) return 1;//khi kich thuoc =0 tra ve 1.
        //print(&tmp[i][0][0],n-1);
        for(i=0;i<n;i++) {
            j*=-1;
           copy(array,&tmp[i][0][0],n,0,i);//thu nho ma tran.
           //print(&tmp[i][0][0],n-1);
           tg+=*(array+i)*(j) * dinh_thuc(&(tmp[i][0][0]),n-1);//thuc hien de quy o day
        }
        return tg;
    
    }
    
    int main(){
        float array[10][10]={{1,2,3},{4,5,6},{7,8,9}};
        float a[10][10];
        printf("%f",dinh_thuc((float*)array,3));
        //copy((float*)array,(float*)a,3,0,0);
    }
    hixxx việc truyền tham số cho hàm là mảng nhiều lúc rắc rối quá nên giờ mới xong

    http://ebook.here.vn
    trang web cung cấp đề thi,tài liệu ôn thi đại học.

  7. #7
    Ngày gia nhập
    03 2009
    Nơi ở
    Hà Nội
    Bài viết
    74

    phần phụ đại số, loại bỏ côt i, dòng j thì mình có 2 cách xử lý:
    :cách thứ nhất ứng với mỗi bước đệ quy mình truyền thêm 2 màng 1 chiều chứa các cột dòng cần loại bỏ
    :cách thứ 2 tạo các mảng phụ bên trong hàm và truyền trực tiếp.
    mỗi cách có cái hay của nó,va mình chọn cách 1.

    http://ebook.here.vn
    trang web cung cấp đề thi,tài liệu ôn thi đại học.

  8. #8
    Ngày gia nhập
    02 2009
    Bài viết
    4

    bạn minhgiang_hedspi ơi bạn giải thích giùm kĩ mình chỗ này nha , mình chưa hỉu chỗ này :
    Code:
     for(j=0,k=0;j<n;j++) if(j!=b){
             *(out+l*10+k)=*(in+i*10+j);
             k++;
             printf("%.1f ",*(in+i*10+j));
          }
    và biến tạm mà dùng mảng ở đây nũa :
    Code:
    float tmp[10][10][10];
    phiền bạn 1 chút nữa thui nhé ,cám ơn bạn nhiều ,bạn pro ghê.
    Đã được chỉnh sửa lần cuối bởi pixeleyes360 : 23-05-2009 lúc 12:47 AM.

  9. #9
    Ngày gia nhập
    03 2009
    Nơi ở
    Hà Nội
    Bài viết
    74

    vòng for đó đưa ra mảng out sau khi đã loại bỏ các hàng và cột a,b.
    biến tạm là gồm 10 mảng 2 chiều 10*10.
    vì chưa học cấp phát động nên mình phải làm thủ công như thế.hjjjj

    http://ebook.here.vn
    trang web cung cấp đề thi,tài liệu ôn thi đại học.

  10. #10
    Ngày gia nhập
    03 2009
    Bài viết
    11

    thử viết 1 hàm đệ quy riêng trả về tổng sau đó gọi hàm thử xem

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

  1. Nhân hai ma trận vuông dùng cấp phát động
    Gửi bởi gtcommander trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 3
    Bài viết cuối: 01-03-2013, 01:32 AM
  2. Bài tập C nhân 2 ma trận dùng cấp phát bộ nhớ động
    Gửi bởi mr.khoaitay trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 19
    Bài viết cuối: 20-02-2012, 02:38 PM
  3. Class ma trận, lỗi câu lệnh if kiểm tra điều kiện nhân 2 ma trận, sửa giúp mình!
    Gửi bởi code_c trong diễn đàn Thảo luận, góp ý code C/C++ của bạn
    Trả lời: 12
    Bài viết cuối: 25-12-2011, 10:22 PM
  4. Bài tập C Nhân 2 ma trận dùng Mảng nhưng chưa đúng cần giúp
    Gửi bởi ĐạiBàng trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 6
    Bài viết cuối: 26-11-2010, 09:52 AM

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