Hàm tính căn bậc 2 trong c++

Hàm sqrt() là hàm có sẵn trong thư viện math, vì vậy trước khi sử dụng nó hãy khai báo thư viện đã nhé: #include

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

Cú pháp:

sqrt(x)Trong đó x là một số truyền vào bất kỳ, có thể là số nguyên hoặc số thực.

Hàm tính căn bậc 2 trong c++

Căn Bậc 2 Trong C++ Là Gì ?

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

Hôm nay nguyenkhuyendn.edu.vn quay lại cùng với một bài toán đơn giản mà phức tạp. Chắc hẳn khi học lập trình bạn nào cũng đã từng tính căn bậc hai của một số. Chắc không ai quên được tên hàm nó chính là hàm sqrt(). Nhưng các bạn đã bao giờ tự hỏi làm sao để có thể tự viết hàm sqrt() này chưa? Hãy cũng mình đi tìm giải pháp trong bài viết này nhé.

Tính căn bậc hai sử dụng hàm trong C/C++

// Code from https://nguyenkhuyendn.edu.vn#include #include int main(){ int x; printf("Input x: "); scanf("%d", &x); printf("Sqrt of %d = %f\n", x, sqrt(x));}Chạy demo:

Input x: 5Sqrt of 5 = 2.236068

Tìm căn bậc hai của một số không dùng hàm thì sao?

Ý tưởng tìm căn bậc hai:Khai báo 1 epsilon đặt sai số chấp nhận, vì căn bậc hai của một số có thể là số thập phân vô hạnKhởi tạo kết quả bằng 1.0

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;Mình sẽ 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.Nếu kết quả có sai số nhỏ hơn EPSILON thì dừng lại và lấy kết quả đó làm đáp án.Ví dụ: Bạn cần tính căn bậc 2 của 5.

Ta khởi tạo kết quả là 1.0. Kết quả này dĩ nhiên không đúng rồi, nên đáp số sẽ nằm trong khoảng 1.0 và 5/1.0 = 5.0.Lấy một nửa hiệu khoảng 1.0 đến 5.0 là 1.0 + (5.0 – 1.0)/2 được 3.0. Nhưng 3.0 lớn hơn kết quả thực(bình phương là biết, trong code thì sai số để check),Lại lấy nửa hiệu khoảng từ 5/3.0 đến 3.0 cộng vào kết quả hiện tại(3.0) = 3.0 + (5/3.0 – 3.0) = 2.33…Cứ làm tiếp tục như vậy cho tới khi sai số nhỏ hơn EPSILON

Code đầy đủ cho ý tưởng này là

// Code from https://nguyenkhuyendn.edu.vn #include #include #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("Input x: "); scanf("%d", &x); printf("Sqrt of %d = %1.9f\n", x, mySqrt(x)); return 0;}Và chạy thử xem sao

Input x: 5Sqrt of 5 = 2.236069

Hàm tính căn bậc 2 trong c++

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

III. Ví Dụ Về Căn Bậc 2 Trong C++

Trong phần này mình sẽ thực hiện hai ví dụ sử dụng hàm sqrt() để các bạn có thể so sánh kết quả nhé.

Xem thêm: Soạn Chuyện Cũ Trong Phủ Chúa Trịnh (Ngắn 1), Chuyện Cũ Trong Phủ Chúa Trịnh

Ví dụ 1: Ở ví dụ này mình sẽ khai báo và khởi tạo giá trị x = 9, sau đó gọi hàm sqrt() để tính căn bậc hai của x.

#include #include using namespace std; int main(){ //khai báo và khởi tạo giá trị x = 9 double x = 9, result; //gọi hàm sqrt() để tính căn bậc hai của x result = sqrt(x); //hiển thị kết quả ra màn hình cout Kết quả:

Hàm tính căn bậc 2 trong c++

Ví Dụ Về Căn Bậc 2 Trong C++

Ví dụ 2: Ở ví dụ này mình sẽ thay đổi giá trị của x thành 125, cùng xem kết quả nhé.

#include #include using namespace std; int main(){ //khai báo và khởi tạo giá trị x = 125 double x = 125, result; //gọi hàm sqrt() để tính căn bậc hai của x result = sqrt(x); //hiển thị kết quả ra màn hình cout Kết quả:

Hàm tính căn bậc 2 trong c++

Ví Dụ Về Căn Bậc 2 Trong C++

IV. Căn Bậc N Trong C

Bài này mình sẽ hướng dẫn các bạn mới học lập trình cách để tính căn bậc n với n là một số bất kỳ nhé, nhưng n >= 2 nha. Chỉ là chỉ lại giúp các bạn nhớ lại toán học thôi ^^.

Một số thắc mắc của các bạn sinh viên:

Tình hình là em đang bí trong cách tính căn bậc n của 1 số. Thực tình em mới học môn này được 2 tuần nên thực tình ko biết giải quyết thế nào, ai biết phép toán của nó ra sao thì giúp em với?Trong C chỉ có hàm sqrt để tính căn bậc 2, vậy nếu em muốn tính căn bậc 3 hay căn bậc n của một số thì làm thế nào ạ?

Tính căn bậc 3 trong C/C++

Để tính căn bậc 3 trong C/C++, bạn sử dụng công thức toán học sau. Công thức này đúng với căn bậc n luôn nhé. Bạn có thể áp dụng để tính căn bậc n của số bất kỳ:

Như vậy, với một số x = 8 chẳng hạn, bạn muốn tính căn bậc 3 của 8. Khi đó, trong công thức trên x = 8, n = 3, m = 1. Vậy ta sẽ phải tính x1/3

Để tính ax trong C/C++, chúng ta có thể sử dụng hàm pow() có cú pháp như sau:

double pow (double base, double exponent);Ví dụ dưới đây sử dụng C/C++ để tính căn bậc 3 của 8 theo cách trên. Các bạn lưu ý em kiểu cho số mũ nhé. Vì 2 số nguyên chia cho nhau sẽ chỉ ra giá trị nguyên(1/3 = 0).

Xem thêm: Lý Thuyết Hóa 12: Tổng Hợp Kiến Thức Và Tóm Tắt Kiến Thức Hóa 12 Trong 1 Phút

#include #include int main (){ int a = 8; printf("%f", pow(a, 1.0/3));}Kết quả: 2.000000

Như vậy, để tính căn bậc n của số a, bạn sẽ dùng hàm pow để tính kết quả của phép tính a1/n

Tính căn bậc 3 không dùng hàm pow

Để tính căn bậc 3 của 1 số dương a ( tổnq quát căn bậc n ), ta phải xây dựng một chuỗi ( toán học ) mà chuỗi này hội tụ về căn bậc 3 của a. Sau đó lặp hữu hạn 1 số lần để được kết quả với độ chính xác nào đó chấp nhận được. Sau day la chuong trinh trong C de thuật tính căn bậc 3 cua 2 voi độ chính xác 0.00000001 chỉ bằng các phép toán +, – , *, / mà thôi.