Nick Chung gửi vào
- 82150 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() {}