Pau*_*rés 2 c double trigonometry
我在课堂上编写了这段代码来练习递归。它是一个sin使用cossin和cos定义的计算器。此代码从库中打印正确的sinand示例,以及从计算器中打印 0 到 360 度之间的sin和cos示例。我认为,有一个错误,一些结果给了我。有人知道问题出在哪里吗?cos<math.h>#IND0
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define M_PI 3.14159265358979323846
#define TOL 0.001
double my_sin(double num);
double my_cos(double num);
double a_radians(double num)
{
return num * M_PI / 180;
}
double my_sin(double num)
{
if (fabs(num) < TOL) {
num = 1.0;
return num;
} else {
num = 2.0 * (my_sin(num / 2.0)) * (my_cos(num / 2.0));
return num;
}
}
double my_cos(double num)
{
if (fabs(num) < TOL) {
num = 1.0;
return num;
} else {
num = ((my_cos(num / 2.0)) * (my_cos(num / 2.0))) -
((my_sin(num / 2.0)) * (my_sin(num / 2.0)));
return num;
}
}
int main()
{
int graus;
double radians, cos_r, sin_r;
graus = 0;
while (graus <= 360) {
printf("%d graus", graus);
radians = a_radians(graus);
printf("\n%f radiants", radians);
sin_r = radians;
sin_r = my_sin(sin_r);
cos_r = radians;
cos_r = my_cos(cos_r);
printf("\nEl sin es %f", sin(radians));
printf("\nEl sin de mysin es %.5f", sin_r);
printf("\nEl cos es %f", cos(radians));
printf("\nEl cos de mycos es %.5f\n\n", cos_r);
graus = graus + 45;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我尝试做一个sin计算器cos,但不起作用。
当角度的绝对值num接近于零时, 的值sin(num)可以用 来近似num,而不是1.0。
double my_sin (double num)
{
if (fabs(num)<TOL){
// remove this line
// num=1.0;
return num;
}
else{
num=2.0*(my_sin(num/2.0))*(my_cos(num/2.0));
return num;
}
}
Run Code Online (Sandbox Code Playgroud)