Nick Chung gửi vào
- 86773 lượt xem
Bài viết này tiếp tục bổ xung các tập lệnh quan trọng trong tính toán lượng giác: acos(arcos), asin( arcsin), atan(arctan), atan2, cosh, sinh, tanh.
Tóm tắt kiến thức liên quan.
Bảng giá trị lượng giác

Biểu thức của các hàm hyperbolic

MACRO
Các góc đặc biệt được định nghĩa :
|
Macro
|
Giá trị
|
|
PI (số pi)
|
3,141592653589793..
|
|
TWO_PI
|
2*Pi=2x3,141592653589793..
|
| HALF_PI | Pi/2=1.57079632679489661923 |
Ví dụ
double x = PI;
void setup()
{
Serial.begin(9600);
Serial.println(x, 10); // lấy 10 số phần thập phân
//x=3.1415927410
}
void loop() {}Hàm asin( x)
Cấu trúc
double asin(double x)
Ví dụ
double Goc;
double Sin = 0.86602; // Sin(Goc)=(căn 3)/2
void setup()
{
Serial.begin(9600);
Goc = asin(Sin);
Serial.println(Goc, 5); // lấy 5 số phần thập phân
//Goc=1.04719
}
void loop() {}
Hàm acos(x)
Cấu trúc
double acos(double x)
- Trả về arcos của x (giá trị radian)
- Kiểu tham trị x: double.
- Kiểu trả về: double.
Ví dụ
double Goc;
double Cos = 0.86602; // cos(Goc)=(căn 3)/2
void setup()
{
Serial.begin(9600);
Goc = acos(Cos);
Serial.println(Goc, 5); // lấy 5 số phần thập phân
//Goc=0.52361
}
void loop() { }

Hàm atan(x)
Cấu trúc
double atan(double x)
- Trả về arctan của x (giá trị radian)
- Kiểu tham trị x: double.
- Kiểu trả về: double.
Ví dụ
double Goc;
double Tan = 1.732050; // Tan(Goc)=Sin(Goc)/Cos(Goc)=(căn 3)
void setup()
{
Serial.begin(9600);
Goc = atan(Tan);
Serial.println(Goc, 5); // lấy 5 số phần thập phân
//Goc=1.04720
}
void loop() {}

Hàm atan2(x, y)
Cấu trúc
double atan2(double x , double y)
- Trả về arctan của x/y (giá trị radian)
- Kiểu tham trị x, y: double.
- Kiểu trả về: double.
Ví dụ
double Goc;
float x = 0.86602540; // =(Căn 3)/2.
float y = 0.5; // =1/2.
void setup()
{
Serial.begin(9600);
Goc = atan2(x, y); // tính arctan(x/y)
Serial.println(Goc, 5); // lấy 5 số phần thập phân
//Goc=1.04720
}
void loop() {}
Hàm arccot(x/y)
Thư viện không hỗ trợ biểu thức này, tuy nhiên ta có thể suy ra từ công thức tính arctan.
Cụ thể:
arccot(x/y) = arctan(y/x)
Như vậy :
arccot(x,y)= atan(y/x)=atan2(y,x);
Hàm cosh(x)
Cấu trúc
double cosh(double x)
Trả về cosh (hàm hyperbolic cosin) của x (giá trị radian) trong phép tính:

- Kiểu tham trị x: double.
- Kiểu trả về: double.

Ví dụ
float x = 1.2345;
double Cosh;
void setup()
{
Serial.begin(9600);
Cosh = cosh(x);
Serial.println(Cosh, 5); // lấy 5 số phần thập phân
//Cosh=1.86382
}
void loop() {}Hàm sinh(x)
Cấu trúc
double sinh(double x)
Trả về sinh (hàm hyperbolic sin) của x (giá trị radian) trong phép tính:

Kiểu tham trị x: double.
Kiểu trả về: double
Ví dụ
float x = 1.2345;
double Sinh;
void setup()
{
Serial.begin(9600);
Sinh = sinh(x);
Serial.println(Sinh, 5); // lấy 5 số phần thập phân
//Sinh=1.57284
}
void loop() {}Hàm tanh(x)
Cấu trúc
double tanh(double x)
Trả về tanh (hàm hyperbolic tan) của x (giá trị radian) trong phép tính:

Kiểu tham trị x: double.
Kiểu trả về: double.
Mối quan hệ của Sinh, Cosh và Tanh

Ví dụ
float x = 1.2345;
double Tanh;
void setup()
{
Serial.begin(9600);
Tanh = tanh(x);
Serial.println(Tanh, 5); // lấy 5 số phần thập phân
//Tanh=0.84388
}
void loop() {}

