
Giải Phương Trình Bậc 2 Trong Giao Diện GUI Matlab 2016a
Để ôn lại kiến thức chúng ta đã học trước giờ thì hôm nay VuTienIT cùng bạn làm bài tập về giải hệ phương trình bậc 2 trong lập trình giao diện GUI của phần mền Matlab.

Như bạn đã biết thì Matlab là phần mền rất mạnh về tính toán. Nó đã xây dựng sẵn các hàm sử lý cho một vấn đề nào đó. Cũng như trong giải phương trình cũng vậy ta có thể sử dụng hàm roots để giải. Hàm này thì không nhất thiết bậc 2 mà bậc 3,4,n… đều giải được cả. Hoặc bạn có thể giải theo phương pháp thủ công trong toán học. Bài viết này sẽ là nền tảng cho bạn thực hiện các phép toán giải phương trình khác.
Để bạn hiểu được bản chất thì chúng ta sẽ giải theo phương pháp thủ công như là tính delta xong rồi giải nghiệm x1, x2… để bạn có thể nắm vững kiến thức. Sau đó bạn có thể thay thế bằng hàm roots để giải cho nhanh.
| Hướng dẫn giải phương trình bậc 2 trong GUI Matlab
Oke chắc bạn học đến bài thứ 8 này rồi thì phần tạo giao diện chắc VuTienIT cũng không cần nói lại quá nhiều phải không? Cái chính là ta hiểu vấn đề mà thôi. Về giao diện thì bạn thiết kế như thế nào cũng được, bạn có thể làm theo giống hình dưới cũng được.
Nếu bạn không biết các đối tượng dưới đây thì bạn hãy xem lại bài viết này Làm quen giao diện GUI Matlab để nắm vững kiến thức nhé.

Nếu bạn làm giống giao diện trên thì hình trên đã chú thích các Tag cần chú ý rồi. Ở những đoạn code dưới VuTienIT sẽ sử dụng đến các Tag này để lấy dữ liệu cũng như đổ dữ liệu ra đối tượng khác cho nên bạn hãy lưu ý nhé đặt tên Tag nhé!
Giờ ta tiến hành viết Code cho các Tag. Bạn hãy mở Function của Tag btnTinhToan của file .m mà bạn đã lưu trước đó và gõ các lệnh dưới đây.
– Lấy dữ liệu của người dùng nhập vào.
getSoA = str2double(get(handles.txtSoA, 'string')); getSoB = str2double(get(handles.txtSoB, 'string')); getSoC = str2double(get(handles.txtSoC, 'string'));
Trong đó:
- str2double: Chuyển đổi kiểu chuỗi sang kiểu double (Số thập phân).
- txtA, txtB, txtC: Là các Tag của 3 ô Edittext a,b,c
– Khi có 3 giá trị a,b,c rồi thì ta tính Delta
resultDelta = getSoB^2 - (4 * getSoA * getSoC);
Trong đó:
- ^: Là số mũ
– Tiếp theo ta so sánh giá trị delta xem có lớn hơn 0 hay nhỏ hơn hay là bằng 0 từ đó ta suy ra nghiệm x1 và x2
if resultDelta > 0 set(handles.msg, 'string', 'Phuong trinh co nghiem kep'); X1 = (sqrt(resultDelta) - getSoB) / (2 * getSoA); X2 = (sqrt(resultDelta) + getSoB) / (2 * getSoA); else if resultDelta == 0 set(handles.msg, 'string', 'Phuong trinh co nghiem kep'); X1 = (sqrt(resultDelta) - getSoB) / (2 * getSoA); X2 = X1; else set(handles.msg, 'string', 'Phuong trinh vo nghiem'); X1 = []; X2 = []; end end
Trong đó:
- sqrt: Tính căn bậc 2
- []: Là mảng rỗng
– Sau khi tính toán cũng như kiểm tra delta thì ta lấy ra được 2 nghiệm x1 và x2. Bây giờ ta sẽ gán ngược trở lại 2 nghiệm này vào 2 ô tag resultX1 và resultX2 để hiện thị cho người dùng biết.
set(handles.resultX1, 'string', X1); set(handles.resultX2, 'string', X2);
Và đây là Code hoàn trình bạn có thể tham khảo

Chỉ bấy nhiêu dòng code là bạn đã hoàn thành giải phương trình bậc 2 rồi. Nếu bạn muốn nhanh nữa thì khia bạn đã lấy được giá trị a,b,c rồi thì bạn dùng hàm roots để giải nhanh chóng.
Thực ra thì để cho hoàn thiện hơn nữa thì bạn cần phải kiểm tra xem người dùng nhập vào có phải là giá trị hợp lệ hay không và thông báo cho họ biết họ nhập sai chỗ nào. Như vậy sẽ hoàn hảo hơn. (Dùng Try Catch). Nó cũng không khó lắm. Bởi vậy chức năng kiểm tra thì coi như là bài tập về nhà để bạn luyện tập thêm.
Tổng Kết:
Trên đây VuTienIT cùng bạn đã giải thành công hệ phương trình bậc 2 rồi đó. Nếu bạn gặp khó khăn gì thì bạn có thể comment phía dưới để nhận được sự trợ giúp nhé. Chúc bạn thành công!
em bị báo lỗi phần function ,mong agiup đỡ
giai phuong trinh bac ba thi sao a