cách giải hệ 4 phuong trình (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

dragonfly1111

Thành viên mới
Tham gia
3/10/08
Bài viết
3
Được thích
0
bác nào có thể giúp mình cách giải hệ 4 phuong trình với.cảm ơn các bác trước.giúp mình với!Đang bí đoạn này!+-+-+-+
 
Theo bài viết của hai a Po_Pikachu và Street. Tuy đã cố gắng đọc đi đọc lại để hiểu đoạn code nhưng vẫn không hiểu được cách gán giá trị như thế nào theo cách giải bài toán hệ pt của Gauss. Rất mong các anh giải thích thêm đoạn code của mình.........cảm ơn các anh nhìu nhìu. Tôi chép lại đoạn code sau (có màu đỏ) của các a mà đến nay tôi vẫn chưa hiểu ra:
Sub tinh()
n = WorksheetFunction.CountA(Range("B:B"))
Dim c()
ReDim c(n + 1, n + 2)
For i = 2 To n + 1
For j = 2 To n + 2
c(i, j) = Cells(i, j)
Next j
Next i
For i = 2 To n + 1
s = c(i, i)
For j = 2 To n + 2
c(i, j) = c(i, j) / s
Next j
For j = 2 To n + 1
If j <> i Then
a = c(j, i)
For k = 2 To n + 2
c(j, k) = c(j, k) - a * c(i, k)
Next k
End If
Next j
Next i

For i = 2 To n + 1
Cells(i, n + 3) = " x" & i - 1
Cells(i, n + 4) = PhanSo(Val(c(i, n + 2)))
'Cells(i, n + 4) = c(i, n + 2)
Next i
End Sub
 
Code trên mà ứng dụng vào việc khác thì mình hiểu. Còn làm để giải hệ pt trình thì thua hoàn toàn. Vì em chẳng thể hiểu nổi cách giải Gauss là gì cả?
Phần tô đỏ của bác là việc lập đi lập lại việc nạp dữ liệu vào mãng c()
Mãng c() n+1 hàng, n+2 cột. Với n là số hệ phương trình. Chỉ là việc thay đổi dữ liệu trong mãng c() thôi.
Thân.
 
A Po-Pikachu, cho tôi hỏi với bài ví dụ ở trên với n=3 thì khi i=2 to n+1 và j=2 to n+2 đáng lý ra là i sẽ chạy từ 2 đến 4 và j sẽ chạy từ 2 đến 5. Nhưng thử chỉ con trỏ vào vòng lặp thì máy báo giá trị của i và j đều bằng 5 (có nghĩa có thể chạy tới 5)..........tôi o hiểu tại sao nó chạy qúa 1 bước như vậy? Mong a có thể giải thích thêm cho tôi mở rộng đầu óc....
 
Từ hệ phương trình: m phương trình, n ẩn: (trường hợp trên m=n)
C11X1 + C12X2 + ... + C1nXn = B1
C21X1 + C22X2 + ... + C2nXn = B2
...
Cm1X1 + Cm2X2 + ... + CmnXn = Bm

Biến đổi thành dạng:
1.X1 + 0.X2 + ... + 0.Xn = B1'
0.X1 + 1.X2 + ... + 0.Xn = B2'
...
0.X1 + 0.X2 + ... + 1.Xn = Bm'
Tương đương với phép thế nghĩa là mỗi phương trình chỉ còn lại một ẩn
Đưa được hệ về dạng này, tương đương với X1 = B1', X2=B2', ...

Tăng 1 bước tương đương với cột vế phải phương trình (Bi): ứng với n+1
ví dụ: với i=1-m; j =1-n -> c(i, j+1) = Bi

Bạn có thể tham khảo đoạn mã này:
Mã:
SUB MATINVSIM (BYREF X() AS DOUBLE, BYVAL M AS LONG, BYREF DET AS DOUBLE, BYREF A() AS DOUBLE, BYREF Y() AS DOUBLE)
    LOCAL PVT AS DOUBLE,T AS DOUBLE
    LOCAL J&,K&,L&,I&
    DET = 1
    FOR J& = 0 TO M
        PVT = A(J&, J&)
        DET = DET * PVT
        IF DET = 0 THEN MSGBOX "MATRIX SINGULAR - Cannot perform the analysis",%MB_ICONERROR,"Calculation Problem": EXIT SUB
        Y(J&) = Y(J&) / A(J&, J&)
        A(J&, J&) = 1
        FOR K& = 0 TO M
            A(J&, K&) = A(J&, K&) / PVT
        NEXT
        FOR K& = 0 TO M
            IF K& <> J& THEN
                T = A(K&, J&)
                Y(K&) = Y(K&) - T * Y(J&)
                A(K&, J&) = 0
                FOR L& = 0 TO M
                    A(K&, L&) = A(K&, L&) - A(J&, L&) * T
                NEXT
            END IF
        NEXT
    NEXT
    FOR I& = 0 TO M
        FOR J& = 0 TO M
            X(I&, J&) = A(I&, J&)
        NEXT
    NEXT
END SUB
 
Lần chỉnh sửa cuối:
Có 1 điều tôi vẫn còn thắc mắc sau khi nghiên cứu khá vất vả các code trên thì tôi vẫn thấy code trên giải quyết giải hệ phương trình đưa về dạng ma trận tam giác trên chứ không phải là ma trận đơn vị nhưng khi tìm hiểu trong phần Watch của máy thì nó cho ra là kết quả ma trận đơn vị.........mong các anh chị chỉ giáo cho tôi thêm về vấn đề này.
 
theo mình nghĩ bài này khá đơn giản
ta chỉ cần nhập vô các matrận hệ số
sau đó dùng công cụ tính nghịch đảo ma trận và nhân ma trận trong excel là okie
cái này trong nội dung toán cao cấp hay phương pháp tính đều có
post đầu tiên trong diễn đàn
chào anh chị em
 
Web KT

Bài viết mới nhất

Back
Top Bottom