Giải hệ phương trình bậc nhất ba ẩn bằng phương pháp Gauss-seidel

Liên hệ QC

Pham Nhat Minh

Thành viên mới
Tham gia
7/2/10
Bài viết
4
Được thích
0
Mình mới học lập trình VBA, đang lọ mọ tập giải bài toán này nhưng không hiểu sao báo lỗi hoài. Xin được nhờ anh em chỉ giáo. Xin chân thành cám ơn!!
Xin lỗi mọi người vì không upload file lên được, nên đành nhờ đường link này vậy:
http://www.2shared.com/file/12145380/c95222c4/Book2.html
 
Lần chỉnh sửa cuối:
Mình mới học lập trình VBA, đang lọ mọ tập giải bài toán này nhưng không hiểu sao báo lỗi hoài. Xin được nhờ anh em chỉ giáo. Xin chân thành cám ơn!!
Xin lỗi mọi người vì không upload file lên được, nên đành nhờ đường link này vậy:
http://www.2shared.com/file/12145380/c95222c4/Book2.html
Sao bạn không đưa file lên trang www.mediafire.com ---> Trang web này là trang dể download và upload tốt nhất trong tất cả những trang web chia sẻ mà tôi biết)
Cái trang bạn upload gì mà lằng nhằng và khó down quá đi (nãy giờ vẫn chưa down được gì)
 
Upvote 0
Xin lỗi cả nhà, em xin được upload lại!
Trong bài tập này em để ba cột đầu tiên là ma trận A ( ma trận hệ số ), cột thứ tư là ma trận B
http://www.mediafire.com/?mnk0zydmzmm
Xin lổi, trình độ tôi còn thấp quá nên hỏng hiểu phương pháp Gauss-seidel là gì!
Tuy nhiên có thể nhìn thấy ngay lổi chia 0 tại dòng này:
x3(i + 1) = (B1 - A11 * x1(i) - A12 * x2(i)) / A13
và 2 dòng tiếp theo
A13, A21 và A32 ban đầu chưa có giá trị gì (tức =0) mà bạn ---> Sao chia cho nó được
Ngoài ra trong code bị thiếu lệnh End If
 
Lần chỉnh sửa cuối:
Upvote 0
Gauss-seidel là phương pháp như sau:
* Giả sử ta có hệ phương trình:
-2x1+5x2+9x3=1
7x1+x2+x3=6
-3x1+7x2-x3=-26
* Ta biến đổi hệ phương trình như sau:
x3(k+1)= (1+2x1(k)-5x2(k))/9
x1(k+1)=(6-x2(k)-x3(k+1))/7
x2(k+1)=(3x1(k+1)+x3(k+1)-26)/7
Trong đó k là số lần lặp, với điều kiện ban đầu là x1(1)=0, x2(1)=0
Thay vào hệ tính ra được x3(2)....x1(2)....x2(2)...........
Cứ thế tính cho đến khi kết quả hội tụ => Được nghiệm.
Rất cảm ơn bác ndu đã trả lời, song ở đây em đã gán A11=Cells(1,1).....và ở ngoài sheet đã cho giá trị cụ thể. Còn lỗi khi em chạy là nó báo next without for, trong khi đó đã có lệnh for rồi. Xin bác và mọi người trên cơ sở này hoặc sửa giúp em hoặc viết cho em một code mới hoàn thiện hơn. Em xin chân thành cảm ơn!
 
Upvote 0
ở đây em đã gán A11=Cells(1,1).....và ở ngoài sheet đã cho giá trị cụ thể. Còn lỗi khi em chạy là nó báo next without for, trong khi đó đã có lệnh for rồi. Xin bác và mọi người trên cơ sở này hoặc sửa giúp em hoặc viết cho em một code mới hoàn thiện hơn. Em xin chân thành cảm ơn!
Thế thì bạn gán... ngược cha nó rồi...
Hic...
Bạn ghi là:
PHP:
Cells(1, 1) = A11
Cells(1, 2) = A12
Cells(1, 3) = A13
Cells(2, 1) = A21
Cells(2, 2) = A22
Cells(2, 3) = A23
Cells(3, 1) = A31
Cells(3, 2) = A32
Cells(3, 3) = A33
Cells(1, 4) = B1
Cells(2, 4) = B2
Cells(3, 4) = B3
Cái này có nghĩa là gán mấy biến vào cell chứ không phải gán giá trị của cell vào biến
Ít ra cũng phải vầy:
PHP:
A11 = Cells(1, 1)
A12 = Cells(1, 2)
A13 = Cells(1, 3)
A21 = Cells(2, 1)
A22 = Cells(2, 2)
A23 = Cells(2, 3)
A31 = Cells(3, 1)
A32 = Cells(3, 2)
A33 = Cells(3, 3)
B1 = Cells(1, 4)
B2 = Cells(2, 4)
B3 = Cells(3, 4)
Ngoài ra thì còn mấy đoạn bất hợp lý:
- Biến x1(100), x2(100)x3(100) bạn khai báo là biến Long tôi cho rằng không ổn ---> Quá trình tính toán thế nào nó cũng ra số lẻ
- Khai báo mãng là x1(100) và chạy vòng lập từ 1 đến 100 ---> Cuối cùng thì Cells(1, 5) = x1(i + 1) tức Cells(1, 5) = x1(101) ---> Ở đâu ra giá trị này? ---> Nó không báo lổi Out of range mới lạ
Hic...
 
Upvote 0
Bác ơi, thế còn chỗ vòng lặp for nó cứ báo lỗi next without for là sao hở?
 
Upvote 0
Bác ơi, thế còn chỗ vòng lặp for nó cứ báo lỗi next without for là sao hở?
Đôi khi cũng dể bị "đánh lừa" vì mấy câu thông báo lổi
Trong file của bạn là thiếu End If chứ không phải thiếu For
---------------
Bài của bạn tôi nghĩ không khó, đáng tiếc tôi lại chẳng biết phương pháp Gauss-seidel là cái giống gì nên không thể giúp bạn toàn bộ được (đại khái không hiểu thuật toán)
Chắc phen này phải tìm tài liệu đọc thêm quá (ít học nó khổ thế đấy)
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom