C语言中的三角函数都是弧度制
三角函数是以角求值,反三角函数是以值求角
余弦函数cos(π) = -1,对应的反余弦函数arccos(-1) = π
因为C语言中没有定义π,所以本文使用反余弦函数arccos(-1)来准确表示π,arccos(-1)在C语言中写为acos(-1)
因为日常使用最多的是角度,所以需要把角度转换为弧度,绕圆一周是360°,对应2π弧度
将2π弧度分为360份,每一份代表1°对应的弧度(角度转弧度)
2
π
360
=
π
180
\frac{2π}{360}=\frac{π}{180}
3 6 0 2 π = 1 8 0 π
30°对应的弧度如下所示,将π替换为arccos(-1)
30
°
=
30
∗
π
180
=
30
∗
a
r
c
c
o
s
(
−
1
)
180
=
π
6
30°=30*\frac{π}{180} =30*\frac{arccos(-1)}{180}= \frac{π}{6}
3 0 ° = 3 0 ∗ 1 8 0 π = 3 0 ∗ 1 8 0 a r c c o s ( − 1 ) = 6 π
角度转弧度表示为 角度*acos(-1)/180
,即30*acos(-1)/180
反过来 弧度转角度,取倒数即可
360
2
π
=
180
π
\frac{360}{2π}=\frac{180}{π}
2 π 3 6 0 = π 1 8 0
π/6 对应的角度如下所示
π
6
=
π
6
∗
180
π
°
=
a
r
c
c
o
s
(
−
1
)
6
∗
180
a
r
c
c
o
s
(
−
1
)
°
=
30
°
\frac{π}{6}=\frac{π}{6}*\frac{180}{π}°=\frac{arccos(-1)}{6}*\frac{180}{arccos(-1)}°=30°
6 π = 6 π ∗ π 1 8 0 ° = 6 a r c c o s ( − 1 ) ∗ a r c c o s ( − 1 ) 1 8 0 ° = 3 0 °
弧度转角度表示为弧度*180/acos(-1)
,即acos(-1)/6*180/acos(-1)
1、正弦函数 sin(x)
头文件 #include<math.h>
函数原型 double __cdecl sin(double _X);
函数定义域 (-∞,+∞)
函数值域 [-1,1]
示例程序
#include <stdio.h>
#include <math.h>
int main ( )
{
printf ( "%f\n" , sin ( 0 * acos ( - 1 ) / 180 ) ) ;
printf ( "%f\n" , sin ( 30 * acos ( - 1 ) / 180 ) ) ;
printf ( "%f\n" , sin ( 60 * acos ( - 1 ) / 180 ) ) ;
printf ( "%f\n" , sin ( 90 * acos ( - 1 ) / 180 ) ) ;
printf ( "%f\n" , sin ( 120 * acos ( - 1 ) / 180 ) ) ;
printf ( "%f\n" , sin ( 150 * acos ( - 1 ) / 180 ) ) ;
printf ( "%f\n" , sin ( 180 * acos ( - 1 ) / 180 ) ) ;
printf ( "%f\n" , sin ( 210 * acos ( - 1 ) / 180 ) ) ;
printf ( "%f\n" , sin ( 240 * acos ( - 1 ) / 180 ) ) ;
printf ( "%f\n" , sin ( 270 * acos ( - 1 ) / 180 ) ) ;
printf ( "%f\n" , sin ( 300 * acos ( - 1 ) / 180 ) ) ;
printf ( "%f\n" , sin ( 330 * acos ( - 1 ) / 180 ) ) ;
printf ( "%f\n" , sin ( 360 * acos ( - 1 ) / 180 ) ) ;
return 0 ;
}
运行截图
2、反正弦函数 asin(x)
[数学表示为arcsin(x)]
头文件 #include<math.h>
函数原型 double __cdecl asin(double _X);
函数定义域 [-1,1]
函数值域 (-∞,+∞)
示例程序
#include <stdio.h>
#include <math.h>
int main ( )
{
printf ( "%f\n" , asin ( - 1 ) * 180 / acos ( - 1 ) ) ;
printf ( "%f\n" , asin ( - sqrt ( 3 ) / 2 ) * 180 / acos ( - 1 ) ) ;
printf ( "%f\n" , asin ( - 1.0 / 2 ) * 180 / acos ( - 1 ) ) ;
printf ( "%f\n" , asin ( 0 ) * 180 / acos ( - 1 ) ) ;
printf ( "%f\n" , asin ( 1.0 / 2 ) * 180 / acos ( - 1 ) ) ;
printf ( "%f\n" , asin ( sqrt ( 3 ) / 2 ) * 180 / acos ( - 1 ) ) ;
printf ( "%f\n" , asin ( 1 ) * 180 / acos ( - 1 ) ) ;
return 0 ;
}
运行截图
3、双曲正弦函数 sinh(x)
头文件 #include<math.h>
函数原型 double __cdecl sinh(double _X);
函数表达式:(其中e是自然对数的底)
s
i
n
h
(
x
)
=
e
x
−
e
−
x
2
sinh(x)=\frac{e^x-e^{-x}}{2}
s i n h ( x ) = 2 e x − e − x
函数定义域 (-∞,+∞)
函数值域 (-∞,+∞)
示例程序
#include <stdio.h>
#include <math.h>
int main ( )
{
printf ( "%f\n" , sinh ( - 30 ) ) ;
printf ( "%f\n" , sinh ( - 10 ) ) ;
printf ( "%f\n" , sinh ( - 1 ) ) ;
printf ( "%f\n" , sinh ( 0 ) ) ;
printf ( "%f\n" , sinh ( 1 ) ) ;
printf ( "%f\n" , sinh ( 10 ) ) ;
printf ( "%f\n" , sinh ( 30 ) ) ;
return 0 ;
}
运行截图