[Thuật toán] Tính các hàm lượng giác

Công thức tính sin(x) và các hàm lượng giác khác như sau:

lượng giác

VD tính sin(x) , x tính theo radian

#include <stdio.h>
#include <stdlib.h>
int main()
{
	double sinx, temp, x;	// x tinh theo radian
	int i = 0;
	scanf("%lf", &x);
	sinx = temp = x;
	while (temp > 0.000001 || temp < -0.000001)	// lam tron den 5 so thap phan
	{
		i++;
		temp = temp*x/(2*i+1)*x/(2*i);	// x^(2i+1)/(2i+1)!
		if (i%2==0) sinx = sinx + temp;
		else sinx = sinx - temp;
	}
	
	printf("%.5f",sinx);
	return 0;
}

Có thể do kiểu dữ liệu hoặc một số lý do khác mà chỉ chính xác được đến -27<=x<=27 với x tính theo radian.
Ở code trên chúng ta không tính hàm x^(2i+1) và (2i+1)! riêng ra mà tính liền vào temp tức là tính temp = x^(2i+1) / (2i+1)! để tránh tràn số với các số x lớn.

Từ đây chúng ta có thể xây dựng cách tính cho các hàm lượng giác khác.

Tham khảo thêm:
Hàm lượng giác