Ta có thể giải phương trình (1) theo các bước như sau
Để giải phương bậc 4 trùng phương thì ta quy nó về phương trình bậc 2 với X = x2Ta tiến hành chọn các nghiệm X thỏa mãn tính chất X lớn hơn hoặc bằng 0.Với nghiệm X = 0 thì ta suy ra phương trình (1) có nghiệm x = 0Với nghiệm X > 0 thì ta suy ra phương trình (1) có hai nghiệm x = ± sqrt(X)
Nếu bạn chưa biết cách giải phương trình bậc 2 trong c++ thì các bạn nên xem lại bài viết này.
Đang xem: Code giải phương trình bậc 4
Mình sẽ tận dụng lại code giải phương trình bậc 2 ở bài trước để giải bài tập này. Nếu các bạn muốn tự viết lại hàm giải phương trình bậc 4 trên thì mình rất khuyến khích!
Ta quy phương trình (1) về phương trình sau:
aX2 + bX + c = 0 (2)
Hàm giải phương trình bậc 2:
0
1
2
3
4
int giaiPT(float a, float b, float c,float &x1, float &x2) {
//code
}
Trong đó hàm trên sẽ trả về số nghiệm của phương trình.
Có hai tham chiếu x1, x2 được trả về chính là hai nghiệm ( X1 và X2 nếu có).
Xem thêm: Unlock Excel Online
Ta có thể biện luận số nghiệm của phương trình (1) như sau:
Số nghiệm của phương trình (2) | Nghiệm X1 | Nghiệm X2 | Số nghiệm của phương trình (1) |
Vô nghiệm | Vô nghiệm | ||
Nghiệm kép | 0 | 0 | Có một nghiệm x =0 |
>0 | >0 | Có hai nghiệm | |
0 | Có ba nghiệm | ||
0 | 0 | Có hai nghiệm | |
>0 | >0 | Có bốn nghiệm |
Từ bảng trên thì ta đã có thể biện luận số nghiệm của phương trình 1 rồi phải không nào !
Cùng xây dựng chương trình giải phương trình bậc 4 trùng phương thôi.
Xem thêm: file excel sổ sách kế toán theo thông tư 133
Code tham khảo
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#include
#include
using namespace std;
int giaiPT(float a, float b, float c, float &x1, float &x2) {
float delta = b * b – 4 * a*c;
if (delta 0) {
x1 = x2 = 0.0;
return 0;
}
else if (delta == 0) {
x1 = x2 = -b / (2 * a);
return 1;
}
else {
delta = sqrt(delta);
x1 = (-b + delta) / (2 * a);
x2 = (-b – delta) / (2 * a);
return 2;
}
}
int main() {
float X1, X2, a, b, c;
do {
cout”Nhap a (a!=0): “;
cin >> a;
cout”Nhap b: “;
cin >> b;
cout”Nhap c: “;
cin >> c;
} while (!a); //nếu a=0 thì nhập lại
if (giaiPT(a, b, c, X1, X2) == 0) {
cout “Phuong trinh vo nghiem”;
}
else if( giaiPT(a, b, c, X1, X2) == 1 ){
if (X1 0)
cout “Phuong trinh vo nghiem”;
else if (X1 == 0)
cout “Phuong trinh co mot nghiem x: ” 0;
else {
cout”Phuong trinh co hai nghiem”endl;
cout “x1: ” sqrt(X1) endl;
cout “x2: ” -sqrt(X1) endl;
}
}
else {
if (X1 0) {
if(X2 0)
cout “Phuong trinh vo nghiem”;
else if(X2 == 0)
cout “Phuong trinh co mot nghiem x: ” 0;
else {
cout “Phuong trinh co hai nghiem” endl;
cout “x1: ” sqrt(X2) endl;
cout “x2: ” -sqrt(X2) endl;
}
}
else if (X1 == 0) {
if(X2 0)
cout “Phuong trinh co mot nghiem x: ” 0;
else {
cout “Phuong trinh co ba nghiem” endl;
cout “x1: ” sqrt(X2) endl;
cout “x2: ” -sqrt(X2) endl;
cout “x3: ” 0;
}
//X2 không thể bằng 0 nếu bằng 0 thì là nghiệm kép
}
else {
if (X2 0) {
cout “Phuong trinh co hai nghiem” endl;
cout “x1: ” sqrt(X1) endl;
cout “x2: ” -sqrt(X1) endl;
}
else if (X2 == 0) {
cout “Phuong trinh co ba nghiem” endl;
cout “x1: ” sqrt(X1) endl;
cout “x2: ” -sqrt(X1) endl;
cout “x3: ” 0;
}
else {
cout “Phuong trinh co bon nghiem” endl;
cout “x1: ” sqrt(X1) endl;
cout “x2: ” -sqrt(X1) endl;
cout “x3: ” sqrt(X2) endl;
cout “x4: ” -sqrt(X2) endl;
}
}
}
system(“pause”);
return 0;
}
0
1
2
3
4
5
6
7
Nhap a (a!=0): 1
Nhap b: -2
Nhap c: 1
Phuong trinh co hai nghiem
x1: 1
x2: -1
Bài viết mình đến đây là kết thúc. Cám ơn các bạn đã theo dõi !
source: nguyenvanhieu.vn
nguyenvanhieu.vnlập trình c/c++
V vantam
Read more posts by this author.
Read More
Latest Posts
— lingocard.vn —
→
lingocard.vn
—
Thuật toán giải phương trình bậc 4 trùng phương bằng code c++
Share this
lingocard.vn © 2021Latest PostsNewsraoxyzcongtyaz