Cách giải phương trình bậc 2
Phương trình bậc 2 là phương trình có dạng : ax² + bx + c = 0. ( a ≠ 0 ) ( 1 )
Ở những lớp dưới ta đã có giải pháp giải bằng cách tính delta :
- Đầu tiên tính delta = b² – 4ac
- Nếu delta < 0 thì kết luận vô nghiệm
- Nếu delta = 0 thì có nghiệm kép
- Nếu delta > 0 thì sẽ có 2 nghiệm phân biệt
Ý tưởng
- Dùng một vòng
do while
để nhập a, b, c nếu a = 0, thì nhập lại. - Chúng ta dùng hàm
sqrt()
trong thư viện math.h để tính căn delta hoặc tính căn không dùng hàmsqrt()
tại đây. - Chúng ta tạo hàm
giaiPT
trả về kiểuint
chính là số nghiệm của phương trình (1). - Chúng ta sẽ đưa tham chiếu 2 biến x1, x2 vào hàm
giaiPT
để gán giá trị hai nghiệm. - Nếu pt (1) vô nghiện thì
giaiPT
sẽ trả về 0, đồng thời gán x1 = x2 =0 . - Nếu pt (1) có nghiệm kép thì
giaiPT
sẽ trả về 1, đồng thời gán x1 = x2 = -b/2a . - Nếu pt (1) có 2 nghiệm thì
giaiPT
sẽ trả về 2, gán x1 = (-b+√delta ) / 2a x = (-b-√delta ) / 2a .
Code C
012345678910111213141516171819202122232425262728293031323334353637383940414243
#include
#include
intgiaiPT(floata,floatb,floatc,floatvà x1, float và x2 ) {
float delta = b * b – 4 * a * c ;
if(delta<0){
x1=x2=0.0;
return0;
}
elseif(delta==0){
x1=x2=-b/(2*a);
return1;
}
else{
delta=sqrt(delta);
x1=(-b+delta)/(2*a);
x2=(-b-delta)/(2*a);
return2;
}
}
intmain(){
floata,b,c;
floatx1,x2;
do{
printf(” Nhap a ( a ! = 0 ) : “);
scanf(” % f “,và a ) ;
printf(” Nhap b : “);
scanf(” % f “,và b ) ;
printf(” Nhap c : “);
scanf(” % f “,và c ) ;
}
while(!a);/ / Nếu a = 0 thì nhập lại
intnumNo=giaiPT(a,b,c,x1,x2);
if(numNo==0){
printf(” Phuong trinh da cho vo nghiem “);
}
elseif(numNo==1){
printf(” Phuong trinh da cho co nghiem kep x = %. 4 f “,x1);
}
else{
printf(” Phuong trinh da cho co hai nghiem phan biet \ nx1 = %. 4 f \ nx2 = %. 4 f “,x1,x2);
}
}
01234567
Nhap a ( a ! = 0 ) : 3Nhap b : – 5Nhap c : 2Phuong trinh da cho co hai nghiem phan bietx1 = 1.0000×2 = 0.6667
Code C + +
012345678910111213141516171819202122232425262728293031323334353637383940414243444546
#include
#include
usingnamespacestd;
intgiaiPT(floata,floatb,floatc,floatvà x1, float và x2 ) {
float delta = b * b – 4 * a * c ;
if(delta<0){
x1=x2=0.0;
return0;
}
elseif(delta==0){
x1=x2=-b/(2*a);
return1;
}
else{
delta=sqrt(delta);
x1=(-b+delta)/(2*a);
x2=(-b-delta)/(2*a);
return2;
}
}
intmain(){
floata,b,c;
floatx1,x2;
do{
cout<<" Nhap a ( a ! = 0 ) : ";
cin>>a;
cout<<" Nhap b : ";
cin>>b;
cout<<" Nhap c : ";
cin>>c;
}
while(!a);
intnumNo=giaiPT(a,b,c,x1,x2);
if(numNo==0){
cout<<" Phuong trinh da cho vo nghiem ";
}
elseif(numNo==1){
cout<<" Phuong trinh da cho co nghiem kep x = %. 4 f "< } else{ cout<<" Phuong trinh da cho co hai nghiem phan biet "< cout<<" x1 = "< cout<<" x2 = "< } } 01234567
Nhap a ( a ! = 0 ) : 3Nhap b : – 5Nhap c : 2Phuong trinh da cho co hai nghiem phan bietx1 = 1×2 = 0.666667
Bài học của mình đến đây là kết thúc .
Source: https://camnangbep.com
Category: Học tập