Giải hệ phương trình tuyến tính java

Bài tập cơ bản này ta có thể có hướng giải quyết là sử dụng các phép toán cơ bản trong ngôn ngữ lập trình C.

Đầu vào sẽ là biến nguyên dương a, b, c, d, e, f từ bàn phím,  yêu cầu của bài toán là tìm x và y.

2. Lời giải

Đầu tiên chúng ta tìm hiểu hệ phương trình bậc nhất hai ẩn là gì?

Phương trình hệ phương trình bậc nhất hai ẩn có dạng:

Trong đó a, b, c, d, e, f là những số cho trước còn x và y là ẩn.

Các bước giải hệ phương trình bậc nhất hai ẩn như sau:

Bước 1: Từ một phương trình của hệ phương trình đã cho, ta biểu diễn một ẩn theo ẩn kia rồi thế vào phương trình còn lại để được một phương trình mới [chỉ còn một ẩn].

Bước 2: Giải phương trình một ẩn vừa có, rồi suy ra nghiệm của hệ phương trình đã cho.

Ví dụ:

Từ đó ta sẽ có các bước thực hiện bài toán trong C như sau:

Bước 1: khai báo biến int a, b, c, d, e, f là các tham số đã cho của hệ phương trình, khai báo biến int x, y là các ẩn số của hệ phương trình.

Bước 2: Nhập dữ liệu từ bàn phím gán vào các tham số a, b, c, d, e, f của hệ phương trình.

Bước 3: Ta khai báo biên int D = a * e – d * b; int Dx = c * e – f * b; int Dy = a * f – d * c;

Bước 4: Sử dụng  if với điều kiện nếu D!=0 thì hệ phương trình có 2 nghiệm x = Dx / D; y = Dy / D; ngược lại sử dụng if với điều kiện Dx != 0 || Dy != 0 thì hệ phương trình vô nghiệm; ngược sử dụng if với điều kiện Dx == Dy == 0 thì hệ phương trình có vô số nghiệm.

Chương trình như sau:

#include int main[]{ //khai bao cac tham so int a, b, c, d, e, f; //khai bao an int x, y; //nhap du lieu cac tham so printf["\nNhap a: "]; scanf["%d", &a]; printf["\nNhap b: "]; scanf["%d", &b]; printf["\nNhap c: "]; scanf["%d", &c]; printf["\nNhap d: "]; scanf["%d", &d]; printf["\nNhap e: "]; scanf["%d", &e]; printf["\nNhap f: "]; scanf["%d", &f]; int D = a * e - d * b; int Dx = c * e - f * b; int Dy = a * f - d * c; if[D != 0]{ x = Dx / D; y = Dy / D; printf["\nHe phuong trinh co 1 nghiem duy nhat: x = %d va y = %d", x, y]; }else{ if[Dx != 0 || Dy != 0]{ printf["\nHe phuong trinh vo nghiem"]; }else if[Dx == Dy == 0]{ printf["\nHe phuong trinh co vo so nghiem"]; } } }

Ví dụ tôi nhập a=3, b=4, c=5, d=6, e=7, f=8

Kết quả:

Nhap a: 3

Nhap b: 4

Nhap c: 5

Nhap d: 6

Nhap e: 7

Nhap f: 8

He phuong trinh co 1 nghiem duy nhat: x = -1 va y = 2

3. Tổng kết

Để thực hiện giải hệ phương trình bậc nhất hai ẩn trong C bạn đọc cần phải có kiến thức cơ bản về ngôn ngữ lập trình C, bạn cần nắm vững cách nhập xuất căn bản và các cách sử dụng vòng lặp trong C và các phép toán học cơ bản.

85 / 100

Hôm nay Lập trình không khó sẽ hướng dẫn các bạn cách giải hệ phương trình bậc nhất 2 ẩn bằng code C/C++. Nhưng trước khi giải bài toán này chúng ta cũng tìm hiểu hệ phương trình bậc nhất 2 ẩn là gì ?

Định nghĩa phương trình bậc nhất 2 ẩn

Ở các lớp dưới chúng ta đã những phương pháp giải hệ phương trình trên như: Phương pháp thế, phương pháp đặt ẩn phụ…

Nhưng liệu trong C++ ta có dùng lại những phương pháp này được không ? Câu trả lời là có nhưng với mỗi phương pháp thì nó những ưu nhược điểm riêng. Ví dụ ta rút x ở hệ phương trên x = [ c1 -b1y ] / a1 

Nhưng nếu a1 bằng 0 thì sao ? Không lẻ bạn ngồi viết từng dòng if else để rút thế, nếu bạn làm như cũng được thôi nhưng chương trình của bạn sẽ phức tạp hơn rất nhiều. Vậy nên mình sẽ giới thiệu đến các bạn một phương pháp giải mới.

Giải hệ phương trình bậc nhất bằng phương pháp Cramer

Phương pháp Cramer

Các bạn có thể xem thêm phương pháp Cramer tại đây.

Từ đây ta chỉ cần tính các định thức D, Dx, Dy là xong rồi phải không nào.

  • Nếu định thức D = 0 thì phương trình hoặc vô nghiệm hoặc vô số nghiệm. Nếu Dx = Dy = 0 thì phương trình có vô số nghiệm. Ngược lại thì phương trình trên vô nghiệm.
  • Nếu định thức D ≠ 0 thì hệ phương trình trên luôn có nghiệm duy nhất với x = Dx/D và y = Dy/D.

Nào ta cùng bắt tay vào viết chương trình thôi !

Chương trình giải hệ phương trình bậc nhất 2 ẩn

Dưới đây là chương trình tham khảo cách giải hệ phương trình bậc nhất 2 ẩn, mình khuyên các bạn nên viết trước khi xem source.

Code C:

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

#include

int main[]{

    int a1, b1, c1, a2, b2, c2;

    float D, Dx, Dy, x, y;

    printf["a1*x + b1*y = c1\n"];

    printf["a2*x + b2*y = cc\n"];

    printf["\nNhap a1: "]; scanf["%d", &a1];

    printf["\nNhap b1: "]; scanf["%d", &b1];

    printf["\nNhap c1: "]; scanf["%d", &c1];

    printf["\nNhap a2: "]; scanf["%d", &a2];

    printf["\nNhap b2: "]; scanf["%d", &b2];

    printf["\nNhap c2: "]; scanf["%d", &c2];

    D = a1 * b2 - a2 * b1;

    Dx = c1 * b2 - c2 * b1;

    Dy = a1 * c2 - a2 * c1;

    if [D == 0] {

        if [Dx + Dy == 0]

            printf["He phuong trinh co vo so nghiem"];

        else

            printf["He phuong trinh vo nghiem"];

    }

    else {

        x = Dx / D;

        y = Dy / D;

        printf["He phuong trinh co nghiem [x, y] = [%d, %d]", x, y];

    }

    return 0;

}

Code C++:

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

#include

using namespace std;

int main[]{

    int a1, b1, c1, a2, b2, c2;

    float D, Dx, Dy, x, y;

    cout

Chủ Đề