Trong bài viết này, chúng ta sẽ xem một chương trình JavaScript để Giải Phương trình Bậc hai và với mục đích này, chúng ta phải biết Phương trình Bậc hai là gì.
Dạng chuẩn của phương trình bậc hai:
ax2+bx+c = 0,
a ≠ 0
Ở đây a, b và c là hệ số (số thực) do người dùng nhập vào. Điểm cần nhớ là giá trị của 'a' không thể bằng không.
Công thức tìm nghiệm của phương trình:
Mọi phương trình bậc hai đều có hai nghiệm. Đặt các nghiệm này là x và y. Khi đó, công thức tính là:
(x,y) = (-b ± √(b2-4ac))/2
Bản chất của một căn phụ thuộc vào biệt thức của phương trình bậc hai tức là (b2-4ac). (b2-4ac) được gọi là biệt thức của phương trình bậc hai.
Nếu biệt thức lớn hơn 0, nghiệm là thực và khác nhau.
Nếu biệt thức bằng 0, nghiệm là thực và bằng nhau.
Nếu biệt số nhỏ hơn 0, phương trình vô nghiệm nếu không xét đến trường số phức. Nếu xét đến trường số phức thì phương trình có các nghiệm phức và khác nhau.
Hãy xem một số chương trình Javascript để giải phương trình bậc hai.
1. Giải phương trình bậc 2 không xét trường số phức
Trước khi bắt đầu viết chương trình JavaScript bạn cần cài đặt phần mềm Notepad ++ hoặc các phần mềm, công cụ viết code khác. Mã lệnh của chương trình giải phương trình bậc hai như sau:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="src/style.css">
<title> Giải phương trình bậc 2 </title>
<script type="text/javascript">
function giaiptbh()
{
var a, b, c, delta, x1, x2;
a = parseFloat(document.giaib2.a.value);
b = parseFloat(document.giaib2.b.value);
c = parseFloat(document.giaib2.c.value);
delta = b*b - 4*a*c;
if (delta < 0)
{
document.write(" Phương trình vô nghiệm ");
}
else if (delta ==0)
{
x1 = (-b/2)*a;
x2 = (-b/2)*a;
document.giaib2.x.value =x1;
document.giaib2.y.value =x2;
}
else if (delta > 0)
{
x1 = (-b + Math.sqrt(delta))/(2*a);
document.giaib2.x.value =x1;
x2 = (-b - Math.sqrt(delta))/(2*a);
document.giaib2.y.value =x2;
}
}
function xoapt()
{
document.giaib2.a.value ="";
document.giaib2.b.value ="";
document.giaib2.c.value ="";
document.giaib2.x.value ="";
document.giaib2.y.value ="";
}
</script>
</head>
<body>
<form name="giaib2">
<center>
<br>Nhập hệ số a:
<input type="text" name="a" value="">
<br> Nhập hệ số b:
<input type="text" name="b" value="">
<br>Nhập hệ số c:
<input type="text" name="c" value="">
<br>Nghiệm x1 là:
<label>
<input type="text" name="x"/>
</label>
<br>Nghiệm x2 là:
<label>
<input type="text" name="y"/>
</label>
<br>
< input type="button" value="Giải phương trình" onclick="giaiptbh()" />
< input type="button" value="Xóa" onclick="xoapt()" />
</center>
</form>
</body>
</html>
Phân tích đoạn mã:
Để giải phương trình ta phải xây dựng một hàm và đặt trong cặp thẻ <script>... </script>
Khai báo các biến số là các hệ số, biệt thức delta và nghiệm.
Gán các hệ số bằng giá trị được nhập từ người dùng. Ở đây sử dụng hàm parseFloat() để chuyển chuỗi về dạng số thực.
Tính biệt thức delta và sử dụng delta làm biểu thức điều kiện.
Sử dụng câu lệnh if..else if để xét 3 trường hợp có thể xảy ra khi giải đối với phương trình bậc hai tùy thuộc vào giá trị biệt thức delta nhỏ hơn 0, bằng 0 hay lớn hơn 0. Ứng với mỗi điều kiện của biệt thức delta thì câu lệnh sẽ được thực thi và tính ra nghiệm của phương trình.
Tiếp theo, xây dựng một hàm để xóa các giá trị trong ô nhập để thuận tiện hơn trong việc nhập dữ liệu từ người dùng.
Phần thân chương trình tạo một form có tên là "giaib2" trong biểu mẫu đó thiết kế ra các ô nhập bao gồm: ô nhập dành cho 3 hệ số a, b và c; 2 ô nhập để hiển thị kết quả nghiệm; 02 nút xử lý sự kiện click chuột từ người dùng, mỗi nút được gán hàm giải phương trình và hàm để xóa dữ liệu tại ô nhập.
Kết quả đầu ra khi chạy đoạn mã trên như hình ảnh bên dưới:
2. Giải phương trình bậc 2 có xét trường số phức
Trước khi bắt đầu viết chương trình JavaScript bạn cần cài đặt phần mềm Notepad ++ hoặc các phần mềm, công cụ viết code khác. Viết đoạn mã sau:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title> Giải phương trình bậc 2 bằng Javascript </title>
</head>
<body>
<div style="text-align: justify;"><p><span style="color:black; font-family:Tahoma; font-size:14pt;" >
<button onclick="Giaipt()">Giải phương trình</button>
<script type="text/javascript">
function Giaipt () {
// chương trình giải phương trình bậc hai
var x1, x2;
// lấy đầu vào giá trị các hệ số từ người dùng
var a = prompt("Nhập hệ số a: ");
var b = prompt("Nhập hệ số b: ");
var c = prompt("Nhập hệ số c: ");
// Tính delta
var delta = b * b - 4 * a * c;
// Điều kiện cho 2 nghiệm thực phân biệt
if (delta > 0) {
x1 = (-b + Math.sqrt(delta)) / (2 * a);
x2 = (-b - Math.sqrt(delta)) / (2 * a);
// kết quả
document.write(`Phương trình có 2 nghiệm phân biệt. Nghiệm của phương trình bậc hai là ${x1} và ${x2}`);
}
// Điều kiện cho nghiệm kép
else if (delta == 0) {
x1 = -b / (2 * a);
x2 = -b / (2 * a);
// kết quả
document.write(`Phương trình có nghiệm kép. Nghiệm của phương trình bậc hai là x1 = x2 = ${x1}`);
}
// Điều kiện cho nghiệm ảo
else {
var phanthuc = (-b / (2 * a)).toFixed(2);
var phanao = (Math.sqrt(-delta) / (2 * a)).toFixed(2);
// kết quả
document.write(`Phương trình có nghiệm ảo. Nghiệm của phương trình bậc hai là: ${phanthuc} + ${phanao}i và ${phanthuc} - ${phanao}i`);
}
}
</script>
</body>
</html>
Đầu ra 1:
Nhập hệ số a: 1
Nhập hệ số b: -3
Nhập hệ số c: 2
Nghiệm của phương trình bậc hai là 2 và 1
Các giá trị đầu vào ở trên thỏa mãn điều kiện if đầu tiên. Ở đây, giá trị delta sẽ lớn hơn 0 và mã tương ứng được thực thi.
Đầu ra 2:
Nhập hệ số a: 1
Nhập hệ số b: -2
Nhập hệ số c: 1
Nghiệm của phương trình bậc hai là nghiệm kép và bằng: 1
Các giá trị đầu vào ở trên thỏa mãn điều kiện else if. Ở đây, giá trị delta sẽ bằng 0 và mã tương ứng được thực thi.
Đầu ra 3:
Nhập hệ số a: 1
Nhập hệ số b: 2
Nhập hệ số c: 5
Nghiệm của phương trình bậc hai là -1,00 + 2,00i và -1,00 - 2,00i
Trong đầu ra ở trên, giá trị delta sẽ nhỏ hơn 0 và mã tương ứng được thực thi.
Trong chương trình trên, phương thức Math.sqrt() được sử dụng để tìm căn bậc hai của một số. Bạn có thể thấy điều đó cũng được sử dụng phương thức toFixed(2) trong chương trình để làm tròn số thập phân thành hai giá trị thập phân.
Kết quả đầu ra khi chạy đoạn mã trên như hình ảnh bên dưới:
Tham khảo các chủ đề có liên quan khác: