Giải hệ phương trình n ẩn n phương trình

Blue Softs Liên hệ QC

street

Thành viên mới
Tham gia ngày
1 Tháng sáu 2008
Bài viết
32
Được thích
81
Chương trình này mình viết bằng ngôn ngữ Visual Basic dùng trong Excel. File này có thể giải hệ phương trình n ẩn n phương trình. File này viết dựa trên thuật toán giải hệ phương trình của Gauss đã được học hồi cấp 3. File này mình viết code để có thể giải hệ phương trình tối đa là 100 phương trình 100 ẩn. Nếu các bạn muốn giải hệ phương trình nhiều hơn 100 phương trình thì chỉ cần chỉnh lại code là được.
Nhấn vào file.
Ví dụ giải hệ 3 phương trình 3 ẩn:
2x + 4y + 6z = 22
4x + 4y + 2z = -10
-x + 4y - 5z = -15
Nghiệm sẽ là x=-6, y=1, z=5 như các bạn thấy trong hình:

1392744960_aa7cfb8a5f_o.jpg


Gọi ô A1 là cells(1,1), ô C2 là cells(2,3), ...
Đây là hệ 3 phương trình 3 ẩn nên viết số 3 ở cells(1,1)
Các hệ số của hệ phương trình lần lượt bắt đầu viết từ cells(2,2)
Các bạn đảo thứ tự các phương trình sao cho các cells(i,i) khác 0
(cells(i,i) là cells(2,2), cells(3,3),...)
Tiếp theo làm như sau:
Nhấn chuột phải vào thanh menu rồi nhấn vào "Visual Basic" như hình vẽ:

1388909795_e8f141cc9b_o.jpg


Khi đó sẽ hiện ra:

1389805672_42da00fe41_o.jpg


Nhấn vào "Visual Basic Editor" nằm ở vòng tròn đỏ nhỏ trong hình trên
Sẽ hiện ra 1 cửa sổ như hình vẽ:

1389806598_b57c5f9974_o.jpg


Nhấn vào nút trong hình tròn màu đỏ như hình trên (hoặc nhấn nút F5). Sẽ xuất hiện:

1388912329_424aa0b161_o.jpg


Nhấn vào nút "Tinh toan", thì nghiệm x, y, z sẽ lần lượt là các ô trong cột cuối cùng như hình vẽ:

1392744960_aa7cfb8a5f_o.jpg


Khi giải hệ 5 phương trình 5 ẩn thì kết quả là:

1392745282_a2464a6bdb_o.jpg
 

File đính kèm

  • hpt.rar
    8.3 KB · Đọc: 4,452

vucuong51

Thành viên mới
Tham gia ngày
1 Tháng mười một 2008
Bài viết
37
Được thích
29
Nghề nghiệp
Nghiên cứu chính sách về nhà ở
Tôi thích bài viết của Bạn Street. 100 ẩn cũng đã lắm rồi, tuy nhiên nếu bạn nêu nguyên tắc chỉnh code như thế nào (trong trường hợp n>100) thì tốt quá (vì mình mới học mà). Xin cảm ơn
 
Lần chỉnh sửa cuối:

Po_Pikachu

Po_pikachu@ymail.com
Tham gia ngày
29 Tháng tư 2008
Bài viết
2,209
Được thích
3,567
Nghề nghiệp
#VALUE!
Xin lỗi tác giả trước!
Mình xin mạng phép sữa lại như sau để giải phương trình bậc cao hơn 100. Nhưng thật sự không dám chắc là giải được. Vì đọc sơ qua code thì chẳng hiểu là giải như thế nào cả?
Đây là file đã sữa.
Thân.
 

File đính kèm

  • Giai_phuong_trinh_bac_n.xls
    26 KB · Đọc: 1,267

le tin

Học mãi
Tham gia ngày
22 Tháng mười 2007
Bài viết
724
Được thích
557
Xin hỏi bạn , nghiệm số và hệ số cần phải chính xác (dạng phân số) ,trường hợp đó bài toán giải quyết được khộng .Vấn đề nữa là , số ở cell(1,1) không nhập mà tự tính luôn bằng cách đếm dòng được chứ .
 
Lần chỉnh sửa cuối:

Po_Pikachu

Po_pikachu@ymail.com
Tham gia ngày
29 Tháng tư 2008
Bài viết
2,209
Được thích
3,567
Nghề nghiệp
#VALUE!
Vế vấn đề phân số thì bạn tham khảo thêm ở đây.
Còn ở Cell(1,1) thì muốn tự tính luôn cũng được. Bạn xem lại file này nha!
Thân.
 

File đính kèm

  • Giai_phuong_trinh_bac_n.xls
    39.5 KB · Đọc: 773

street

Thành viên mới
Tham gia ngày
1 Tháng sáu 2008
Bài viết
32
Được thích
81
Trong code, nếu bạn thay Dim c(100, 101) bằng Dim c(252, 253) thì sẽ giải được hệ phương trình 252 ẩn, 252 phương trình
 

Po_Pikachu

Po_pikachu@ymail.com
Tham gia ngày
29 Tháng tư 2008
Bài viết
2,209
Được thích
3,567
Nghề nghiệp
#VALUE!
Vậy bác nên mở code của em ra xem thêm nha!
Viết như vầy nè... Nó sẽ mang tính tổng quát luôn. Phụ thuộc vào hằng số n nếu nhiều thì nó tự sẽ nhiều, nếu ít thì nó sẽ tự vừa khít. Không dư không thiếu mà còn tiết kiệm được dung lượng ổ nhớ. Tránh việc dư thừa không đáng.
PHP:
c(n + 1, n + 2)
Thân.
 

street

Thành viên mới
Tham gia ngày
1 Tháng sáu 2008
Bài viết
32
Được thích
81
Mình cũng đã từng viết dim c(n,n+1) nhưng không biết sao không được. Hình như phải là 1 số cụ thể thì mới được
 

Po_Pikachu

Po_pikachu@ymail.com
Tham gia ngày
29 Tháng tư 2008
Bài viết
2,209
Được thích
3,567
Nghề nghiệp
#VALUE!
À, thì ra là thầy quên dùng lệnh Redim nên không thể thêm biến động vào được.
Thầy mở file này ra xem code là hiểu ngay.
Thân.
 

street

Thành viên mới
Tham gia ngày
1 Tháng sáu 2008
Bài viết
32
Được thích
81
File sau trong code dùng lệnh MMult nên các bạn có thể nhập số 0 vào cells(i,i) cũng được. Phía dưới chữ "Nghich dao" là ma trận nghịch đảo của ma trận các hệ số của các biến:

15701499ir7.jpg
 

File đính kèm

  • He_phuong_trinh.xls
    29 KB · Đọc: 685

trungnt

Thành viên hoạt động
Tham gia ngày
2 Tháng hai 2007
Bài viết
135
Được thích
87
Tôi có tải về đoạn code giải hệ phương trình 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ủa các a mà đến nay tôi vẫn chưa hiểu ra:
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
 

xuanhoa7604

Thành viên hoạt động
Tham gia ngày
9 Tháng sáu 2008
Bài viết
169
Được thích
79
Nghề nghiệp
Giáo viên
Mình muốn giải hệ phương trình nhiều ẩn nhưng kết quả ra chính xác (nghiệm ở dạng phân số chứ không phải là mấy phẩy) thì làm thế nào vậy bạn?
 
Lần chỉnh sửa cuối:

daicatxtn

Thành viên mới
Tham gia ngày
3 Tháng chín 2009
Bài viết
1
Được thích
0
sao bấm zo phần visual basic rồi bấm f5 nó hện lên cái bảng " the marcos in this project are disabled. please refer to the online help or documentation of the host application to determine how to enalble marcos "
rồi bấm ok nó hiện ra 1 cái bảng nữa là sao
 

hoangcam02

Thành viên mới
Tham gia ngày
31 Tháng tám 2009
Bài viết
1
Được thích
0
Chương trình này mình viết bằng ngôn ngữ Visual Basic dùng trong Excel. File này có thể giải hệ phương trình n ẩn n phương trình. File này viết dựa trên thuật toán giải hệ phương trình của Gauss đã được học hồi cấp 3. File này mình viết code để có thể giải hệ phương trình tối đa là 100 phương trình 100 ẩn. Nếu các bạn muốn giải hệ phương trình nhiều hơn 100 phương trình thì chỉ cần chỉnh lại code là được.
Nhấn vào file.
Ví dụ giải hệ 3 phương trình 3 ẩn:
2x + 4y + 6z = 22
4x + 4y + 2z = -10
-x + 4y - 5z = -15
Nghiệm sẽ là x=-6, y=1, z=5 như các bạn thấy trong hình:



Gọi ô A1 là cells(1,1), ô C2 là cells(2,3), ...
Đây là hệ 3 phương trình 3 ẩn nên viết số 3 ở cells(1,1)
Các hệ số của hệ phương trình lần lượt bắt đầu viết từ cells(2,2)
Các bạn đảo thứ tự các phương trình sao cho các cells(i,i) khác 0
(cells(i,i) là cells(2,2), cells(3,3),...)
Tiếp theo làm như sau:
Nhấn chuột phải vào thanh menu rồi nhấn vào "Visual Basic" như hình vẽ:

1388909795_e8f141cc9b_o.jpg


Khi đó sẽ hiện ra:

1389805672_42da00fe41_o.jpg


Nhấn vào "Visual Basic Editor" nằm ở vòng tròn đỏ nhỏ trong hình trên
Sẽ hiện ra 1 cửa sổ như hình vẽ:

1389806598_b57c5f9974_o.jpg


Nhấn vào nút trong hình tròn màu đỏ như hình trên (hoặc nhấn nút F5). Sẽ xuất hiện:

1388912329_424aa0b161_o.jpg


Nhấn vào nút "Tinh toan", thì nghiệm x, y, z sẽ lần lượt là các ô trong cột cuối cùng như hình vẽ:



Khi giải hệ 5 phương trình 5 ẩn thì kết quả là:
Các bạn thăm gia ý kiến đây nhé
 
Lần chỉnh sửa cuối:

trungnt

Thành viên hoạt động
Tham gia ngày
2 Tháng hai 2007
Bài viết
135
Được thích
87
Tôi cố gắng đợi 2 a Po_Pikachu và Street giải thích nhưng o đủ kiên nhẫn chờ, đành đánh liều học lại Pascal may qúa trong lúc bí thủ lại bắt gặp tia sáng ở cuối đường hầm thì tôi mới hiểu đoạn code nói trên.
 

cua

Thành viên mới
Tham gia ngày
6 Tháng hai 2007
Bài viết
3
Được thích
0
Hay lắm! Nhưng càn vấn đề khống chế giá trị x, y, z
 

khương minh phương

Thành viên mới
Tham gia ngày
20 Tháng ba 2010
Bài viết
1
Được thích
0
Sao em ấn f5 rùi mà lại hiện lên dòng này " the marcos in this project are disabled. please refer to the online help or documentation of the host application to determine how to enalble marcos " ???????
 

thaycung

Thành viên hoạt động
Tham gia ngày
27 Tháng một 2008
Bài viết
100
Được thích
87
Ví dụ giải hệ 3 phương trình 3 ẩn:
2x + 4y + 6z = 22
4x + 4y + 2z = -10
-x + 4y - 5z = -15
Nghiệm sẽ là x=-6, y=1, z=5 như các bạn thấy trong hình:
Tôi giải bằng các hàm có sẵn trong Excel (đối với trường hợp n phương trình với n ẩn cũng làm tương tự), mọi người tham khảo.
 

File đính kèm

  • Giai PT.xls
    25 KB · Đọc: 500
Lần chỉnh sửa cuối:

hoailinh1112

Thành viên mới
Tham gia ngày
17 Tháng tư 2011
Bài viết
1
Được thích
0
ban oi...minh dung word 2007 sao k co phan visual basic nhu cua ban...co can cai chuong trjnh visual basic luon ko
 

pexcel

Thành viên mới
Tham gia ngày
29 Tháng mười 2011
Bài viết
2
Được thích
0
Chào bạn street,
Mình dùng hàm =MMULT và =MINVERSE để giải hệ 90 pt (90 ẩn) thì thấy báo lỗi, lệnh "MMULT" trong code VBA bạn đã viết có đáp ứng được ko ạ ?
Mình đang cần giải một hpt với ma trận 90x90 (90 ẩn), lại bập bẹ VBA, nên rất quan tâm.
Cám ơn bạn.
 
Top Bottom