01/10/2018, 15:46
Hỏi về cách tính sin(x)
input: c > 0 (vd: c = 0.0001) và số thực x
output:
sin x = x/1! - x^3/3! + x^5/5! - …+ (-1)^n * [ x^( 2n+1 ) ] / (2n+1)!
với điều kiện: abs([ x^( 2n+1 ) ] / (2n+1)!) <= c
#include <iostream>
#include <math.h>
using namespace std;
int tinhsinx()
{
int n,j,gt=1,a;
double kt,x,c,sinx = 0;
cout << "c = "; cin >> c;
cout << "x = "; cin >> x;
for (n=0;kt<=c;n++)
{
if (n==0) {gt = 1;}
else
{
a=gt;
for(j=n;j<=(2*n+1);j++)
{
a=a*j;
}
}
kt = abs(pow(x,(2*n+1))/a);
if (n%2==0) {sinx = sinx + (pow (x,(2*n+1))/a);}
else {sinx = sinx - (pow (x,(2*n+1))/a);}
}
cout << "sin x = " << sinx << endl;
}
int main()
{
tinhsinx ();
return 0;
}
trong code mình thấy sai ở phần tính giai thừa, mọi người coi còn sai chỗ nào nữa không? chỉ mình sửa lại với. cảm ơn nhiều.
mới học nên thấy còn lạ quá …
Bài liên quan
e chưa hiểu cách "thu hẹp lại trong [-pi/2…pi/2] " . giải thích rõ hơn giúp e vs?
Quay nửa vòng tròn thì sin(x+pi) = -sinx = sin(-x)
Vậy ta làm như sau: sin(5.3pi) = sin(5.3pi - 4pi) = sin(1.3pi) = sin(pi + 0.3pi) = sin(-0.3pi).