1. Hàm toán học (Math Function) trong C++
Trong C++ cung cấp một số hàm toán học cơ bản và chúng ta phải include <math.h> thì mới có thể sử dụng các hàm toán học được.
Trong C++ có hổ trợ các loại toán học sau:
- Trignometric functions
- Hyperbolic functions
- Exponential functions
- Floating point manipulation functions
- Maximum,Minimum and Difference functions
- Power functions
- Nearest integer operations
- Other functions
- Macro functions
- Comparison macro functions
- Error and gamma functions
Trong bài học hôm nay chúng ta chỉ tìm hiểu một trong số các loại trên thôi nhé.
Trignometric functions
| Hàm | Mô tả |
| cos(x) | Dùng để tính cosin của x. Giá trị trả về trong phạm vi [-1, 1] |
| sin(x) | Dùng để tính sin của x. Giá trị trả về trong phạm vi [-1, 1] |
| tan(x) | Dùng để tính tan của x. |
| acos(x) | Dùng để tìm cosin nghịch đảo (acos(x) = cos-1x) của x. Giá trị trả về trong phạm vi (0,∏) nếu -1≤x≤1, không phải một số (nan) nếu x<-1 hoặc x>1 |
| asin(x) | Dùng để tìm sin nghịch đảo (asin(x) = sin-1x) của x. Giá trị trả về là -∏/2,∏/2 nếu -1≤x≤1, không phải là số (nan) nếu x<-1 hoặc x>1 |
| atan(x) | Dùng để tìm tan nghịch đảo (atan(x) = tan-1x) của x. Giá trị trả về trong phạm vi [-∏/2, ∏/2] |
| atan2(x,y) | Dùng để tìm tan nghịch đảo của tọa độ x và y. |
Ví dụ
Chúng ta cùng xem ví dụ đơn giản sau đây có sử dụng các hàm toán học như asin, sin, cos, tan, …
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
#include <iostream> #include<math.h> using namespace std; int main() { double goc = 60; double d = goc*3.14/180; cout << "cosin = " << cos(d) << endl; cout << "sin = " << sin(d) << endl; cout << "tan = " << tan(d) << endl; cout << "cosin nghich dao = " << acos(d) << endl; cout << "sin nghich dao = " << asin(d) << endl; cout << "tan nghich dao = " << atan(d) << endl; return 0; } |
Và kết quả sau khi thực thi chương trình trên:
Hyperbolic functions
| Hàm | Mô tả |
| cosh(x) | Dùng để tính cos hyperbolic của x. |
| sinh(x) | Dùng để tính sin hyperbolic của x. |
| tanh(x) | Dùng để tính tang hyperbolic của x. |
| acosh(x) | Dùng để tìm nghịch đảo cos hyperbolic của x. |
| asinh(x) | Dùng để tìm nghịch đảo sin hyperbolic của x. |
| atanh(x) | Dùng để tìm nghịch đảo tang hyperbolic của x. |
Ví dụ
Chúng ta cùng xem xét một ví dụ đơn giản có sử dụng hyperbolic functions trong C++ như sau:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
#include <iostream> #include<math.h> using namespace std; int main() { double x = 45; double d = x*3.14/180; cout << "cos hyperbolic = " << cosh(d) << endl; cout << "sin hyperbolic = " << sinh(d) << endl; cout << "tang hyperbolic = " << tanh(d) << endl; cout << "nghịch dao cos hyperbolic = " << acosh(d) << endl; cout << "nghich dao sin hyperbolic = " << asinh(d) << endl; cout << "nghich dao tang hyperbolic = " << atanh(d) << endl; return 0; } |
Và kết quả sau khi thực thi chương trình trên như sau:
Nearest integer operations
| Hàm | Mô tả |
| ceil(x) | Dùng để làm tròn lên giá trị của x. |
| floor(x) | Dùng để làm tròn xuống giá trị của x. |
| round(x) | Dùng để làm tròn giá trị của x. |
| lround(x) | Dùng để làm tròn giá trị của x và chuyển thành số nguyên long. |
| llround(x) | Dùng để làm tròn giá trị của x và chuyển thành số nguyên long long. |
| fmod(n,d) | Dùng để lấy phần dư của phép chia n cho d |
| trunc(x) | Dùng để làm tròn xuống không chữ số thập phân |
| rint(x) | Dùng để làm tròn giá trị của x bằng rounding mode |
| lrint(x) | Dùng để làm trong giá trị của x bằng roungding mode và chuyển đổi thành số nguyên long. |
| llrint(x) | Dùng để làm tròn giá trị x và chuyển thành số nguyên long long |
| nearbyint(x) | Dùng để làm tròn giá trị x thành giá trị tích phân gần đó |
| remainder(n,d) | Dùng để tính phần còn lại của n/d. |
| remquo() | Dùng để tính toán phần còn lại và thương. |
Ví dụ
Chúng ta cùng xem xét một ví dụ đơn giản có sử dụng nearest integer operations trong C++ như sau:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
#include <iostream> #include<math.h> using namespace std; int main() { double x = 9.8; double y = 3; cout << "ceil(" << x << "): " << ceil(x) << endl; cout << "floor(" << x << "): " << floor(x) << endl; cout << "round(" << x << "): " << round(x) << endl; cout << "lround(" << x << "): " << lround(x) << endl; cout << "llround(" << x << "): " << llround(x) << endl; cout << "fmod(" << x << "," << y << "): " << fmod(x,y) << endl; cout << "trunc(" << x << "): " << trunc(x) << endl; cout << "rint(" << x << "): " << rint(x) << endl; cout << "lrint(" << x << "): " << lrint(x) << endl; cout << "llrint(" << x << "): " << llrint(x) << endl; return 0; } |
Và kết quả sau khi thực thi chương trình trên như sau:
Other functions
| Hàm | Mô tả |
| fabs(x) | Dùng để tính giá trị tuyệt đối của x. |
| abs(x) | Dùng để tính giá trị tuyệt đối của x. |
| fma(x,y,z) | Dùng để tính biểu thức x * y + z. |
Ví dụ
Chúng ta cùng xem xét một ví dụ đơn giản có sử dụng fabs, abs và fma trong C++ như sau:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
#include <iostream> #include<math.h> using namespace std; int main() { double x = -5.6; double y = 2; double z = 3; cout << "fabs(" << x << "): " << fabs(x) << endl; cout << "abs(" << x << "): " << abs(x) << endl; cout << "fma("<< x << "," << y << "," << z << "): " << fma(x,y,z) << endl; return 0; } |
Và kết quả sau khi thực thi chương trình trên như sau:
Macro functions
| Hàm | Mô tả |
| fpclassify(x) | Dùng để trả về giá trị của loại khớp với một trong các hằng số macro. |
| isfinite(x) | Dùng để kiểm tra xem x có hữu hạn hay không. |
| isinf(x) | Dùng để kiểm tra xem x là vô hạn hay không. |
| isnan(x) | Dùng để kiểm tra xem x có phải là nan hay không. |
| isnormal(x) | Dùng để kiểm tra xem x có bình thường hay không. |
| signbit(x) | Dùng để kiểm tra xem dấu của x có âm hay không. |
Ví dụ
Chúng ta cùng xem xét một ví dụ có sử dụng macro functions trong C++ như sau:
|
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
|
#include <iostream> #include<math.h> using namespace std; int main() { double x = 4.0/0.0; switch(fpclassify(x)) { case FP_INFINITE: cout << "4.0/0.0 la FP_INFINITE" << endl; break; case FP_NAN: cout << "4.0/0.0 la FP_NAN" << endl; break; case FP_ZERO: cout << "4.0/0.0 la FP_ZERO" << endl; break; case FP_SUBNORMAL: cout << "4.0/0.0 la FP_SUBNORMAL" << endl; break; case FP_NORMAL: cout << "4.0/0.0 FP_NORMAL"; break; default: cout << "4.0/0.0 khong phai la so"; } x = 5; cout << "isfinite(" << x << "): " << isfinite(x) << endl; cout << "isinf(" << x << "): " << isinf(x) << endl; cout << "isnan(" << x << "): " << isnan(x) << endl; cout << "isnormal(" << x << "): " << isnormal(x) << endl; cout << "signbit(" << x << "): " << signbit(x) << endl; return 0; } |
Và kết quả sau khi thực thi chương trình trên như sau:
Comparison macro functions
| Hàm | Mô tả |
| isgreater(x,y) | Dùng để xác định xem x có lớn hơn y hay không. |
| isgreaterequal(x,y) | Dùng để xác định xem x có lớn hơn hoặc bằng y hay không. |
| less(x,y) | Dùng để xác định xem x có nhỏ hơn y hay không. |
| islessequal(x,y) | Dùng để xác định xem x nhỏ hơn hoặc bằng y. |
| islessgreater(x,y) | Dùng để xác định xem x nhỏ hơn hay lớn hơn y hay không. |
| isunordered(x,y) | Dùng để kiểm tra xem x có thể được so sánh một cách có ý nghĩa hay không. |
Ví dụ
Chúng ta cùng xem xét một ví dụ đơn giản có sử dụng comparison macro functions trong C++ như sau:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
#include <iostream> #include<math.h> using namespace std; int main() { float x; float y; x = 3; y = 4; cout << "isgreater(x,y): " << isgreater(x,y) << endl; cout << "isgreaterequal(x,y): " << isgreaterequal(x,y) << endl; cout << "isless(x,y): " << isless(x,y) << endl; cout << "islessequal(x,y): " << islessequal(x,y) << endl; cout << "islessgreater(x,y): " << islessgreater(x,y) << endl; cout << "isunordered(x,y): " << isunordered(x,y) << endl; return 0; } |
Và kết quả sau khi thực thi chương trình trên như sau:
Error and gamma functions
| Hàm | Mô tả |
| erf(x) | Dùng để tính giá trị hàm lỗi của x. |
| erfc(x) | Dùng để tính giá trị hàm lỗi bổ sung của x. |
| tgamma(x) | Dùng để tính giá trị hàm gamma của x. |
| lgamma(x) | Dùng để tính toán logarit của hàm gamma của x. |
Ví dụ
Chúng ta cùng xem một ví dụ đơn giản có sử dụng error and gamma functions trong C++ như sau:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
#include <iostream> #include<math.h> using namespace std; int main() { double x; x = 1; cout << "erf(x) = " << erf(x/0) << endl; javascript:void(0) x = -1; cout << "erfc(x) = " << erfc(x/0) << endl; x = 0; cout << "tgamma(x) = " << tgamma(x) << endl; x = 2; cout << "lgamma(x) = " << lgamma(x) << endl; return 0; } |
Và kết quả sau khi thực thi chương trình trên như sau:
2. Kết luận
Như vậy chúng ta đã tìm hiểu xong về các hàm tính toán (Math Functions) có sẳn trong C++. Bài này rất là dài và có rất nhiều hàm chúng ta không thể nào nhớ hết nổi.
Vì vậy trong bài này các bạn chỉ cần nhớ include<math.h> để sử dụng các hàm tính toán trong C++.
Nguồn: https://freetuts.net



