Bài tập

Cùng khám phá cách tính căn bậc hai trong C++

Huy Erick

Trong ngôn ngữ lập trình C++, hàm sqrt() không chỉ đơn thuần là công cụ để tính căn bậc hai, mà còn mang đến cho chúng ta nhiều phương pháp khác để tính căn bậc...

Trong ngôn ngữ lập trình C++, hàm sqrt() không chỉ đơn thuần là công cụ để tính căn bậc hai, mà còn mang đến cho chúng ta nhiều phương pháp khác để tính căn bậc hai một cách linh hoạt. Hãy cùng tìm hiểu những cách thức sử dụng hàm sqrt() và khám phá một phương pháp mới để tính căn bậc hai trong C++.

I. Hàm sqrt() trong C++

Hàm sqrt() là một hàm sẵn có trong thư viện math của ngôn ngữ lập trình C++. Để sử dụng hàm này, chúng ta cần khai báo thư viện math bằng cách sử dụng câu lệnh sau:

#include <math.h>

Hàm sqrt() được sử dụng để tính căn bậc hai của một số. Tham số truyền vào hàm là một số bất kỳ và giá trị trả về là căn bậc hai của số đó.

Cú pháp sử dụng hàm sqrt():

sqrt(x)

Trong đó, x là một số bất kỳ, có thể là số nguyên hoặc số thực.

Hình 1: Căn Bậc 2 Trong C++

II. Hàm Tính Căn Bậc 2 Trong C++

Bây giờ, hãy xem cách sử dụng hàm sqrt() để tính căn bậc hai của một số trong C++.

#include <stdio.h> #include <math.h>  int main() {     int x;     printf("Nhập x: ");     scanf("%d", &x);     printf("Căn bậc hai của %d = %f\n", x, sqrt(x));     return 0; }

Hãy chạy chương trình để kiểm tra kết quả:

Nhập x: 5 Căn bậc hai của 5 = 2.236068

Ngoài ra, nếu bạn muốn tính căn bậc hai của một số mà không sử dụng hàm sqrt(), bạn có thể áp dụng một phương pháp khác như sau:

Hình 2: Tìm Căn Bậc Hai Không Dùng Sqrt

Ý tưởng để tìm căn bậc hai là:

  1. Khai báo một giá trị epsilon để đặt sai số chấp nhận được. Vì căn bậc hai của một số có thể là một số thập phân vô hạn.
  2. Khởi tạo kết quả bằng 1.0.
  3. Nếu kết quả có sai số cao hơn epsilon, cập nhật lại kết quả theo công thức: result = (number/result - result) / 2 + result;
  4. Thu hẹp dần giới hạn trên và giới hạn dưới của kết quả, lấy trung bình hiệu khoảng cách giới hạn đó để cập nhật kết quả. Điều này luôn đảm bảo rằng giới hạn trên dưới sẽ bị thu hẹp nhưng sẽ luôn bao bọc đáp án.
  5. Nếu kết quả có sai số nhỏ hơn epsilon, dừng lại và lấy kết quả đó làm giá trị đáp án.

Dưới đây là đoạn mã đầy đủ để thực hiện ý tưởng này:

#include <stdio.h> #include <math.h> #define EPSILON 0.0001f  double mySqrt(int number) {     double result = 1.0f;     while (fabs(result * result - number) / number >= EPSILON) {         result = (number / result - result) / 2 + result;     }     return result; }  int main() {     int x;     printf("Nhập x: ");     scanf("%d", &x);     printf("Căn bậc hai của %d = %1.9f\n", x, mySqrt(x));     return 0; }

Hãy chạy chương trình để kiểm tra kết quả:

Nhập x: 5 Căn bậc hai của 5 = 2.236068

Với cách này, bạn có thể tính căn bậc hai một cách chính xác và linh hoạt mà không cần sử dụng hàm sqrt() có sẵn.

Hãy khám phá và ứng dụng hàm sqrt() trong lập trình C++ để tính căn bậc hai, và đừng quên cách khác để tính căn bậc hai nếu cần thiết. Chúc bạn thành công trong việc xây dựng các chương trình hữu ích!

1