C语言中sin、asin、sinh三角函数对比

C语言中的三角函数都是弧度制


三角函数是以角求值,反三角函数是以值求角

余弦函数cos(π) = -1,对应的反余弦函数arccos(-1) = π

因为C语言中没有定义π,所以本文使用反余弦函数arccos(-1)来准确表示π,arccos(-1)在C语言中写为acos(-1)

因为日常使用最多的是角度,所以需要把角度转换为弧度,绕圆一周是360°,对应2π弧度

将2π弧度分为360份,每一份代表1°对应的弧度(角度转弧度)

2 π 360 = π 180 {\color{Black} \frac{2π}{360}=\frac{π}{180}} 3602π=180π

30°对应的弧度如下所示,将π替换为arccos(-1)

30 ° = 30 ∗ π 180 = 30 ∗ a r c c o s ( − 1 ) 180 = π 6 {\color{Black} 30°=30*\frac{π}{180} =30*\frac{arccos(-1)}{180}= \frac{π}{6}} 30°=30180π=30180arccos(1)=6π

角度转弧度表示为 角度*acos(-1)/180,即30*acos(-1)/180


反过来 弧度转角度,取倒数即可

360 2 π = 180 π {\color{Black} \frac{360}{2π}=\frac{180}{π}} 2π360=π180

π/6 对应的角度如下所示

π 6 = π 6 ∗ 180 π ° = a r c c o s ( − 1 ) 6 ∗ 180 a r c c o s ( − 1 ) ° = 30 ° {\color{Black} \frac{π}{6}=\frac{π}{6}*\frac{180}{π}°=\frac{arccos(-1)}{6}*\frac{180}{arccos(-1)}°=30°} 6π=6ππ180°=6arccos(1)arccos(1)180°=30°

弧度转角度表示为弧度*180/acos(-1) ,即acos(-1)/6*180/acos(-1)



1、正弦函数 sin(x)

头文件 #include<math.h>

函数原型 double __cdecl sin(double _X);

函数定义域 (-∞,+∞)

函数值域 [-1,1]

sin图像

sin ⁡ 0 ∘ = 0 sin ⁡ 3 0 ∘ = 1 2 sin ⁡ 6 0 ∘ = 3 2 sin ⁡ 9 0 ∘ = 1 sin ⁡ 12 0 ∘ = 3 2 sin ⁡ 15 0 ∘ = 1 2 sin ⁡ 18 0 ∘ = 0 sin ⁡ 21 0 ∘ = − 1 2 sin ⁡ 24 0 ∘ = − 3 2 sin ⁡ 27 0 ∘ = − 1 sin ⁡ 30 0 ∘ = − 3 2 sin ⁡ 33 0 ∘ = − 1 2 sin ⁡ 36 0 ∘ = 0 1 2 {\color{Black} \begin{align*} \sin 0^{\circ} & = 0 & \sin 30^{\circ} & = \frac{1}{2} & \sin 60^{\circ} & = \frac{\sqrt{3} }{2} & \sin 90^{\circ} & = 1 & \sin 120^{\circ} & = \frac{\sqrt{3} }{2} & \sin 150^{\circ} & = \frac{1}{2} \\[2ex] \sin 180^{\circ} & = 0 & \sin 210^{\circ} & = -\frac{1}{2} & \sin 240^{\circ} & = - \frac{\sqrt{3} }{2} & \sin 270^{\circ} & = - 1 & \sin 300^{\circ} & = -\frac{\sqrt{3} }{2} & \sin 330^{\circ} & = -\frac{1}{2} \\[2ex] \sin 360^{\circ} & = 0 & {\color{Transparent} \frac{1}{2} } \end{align*} } sin0sin180sin360=0=0=0sin30sin21021=21=21sin60sin240=23 =23 sin90sin270=1=1sin120sin300=23 =23 sin150sin330=21=21

示例程序

#include<stdio.h>
#include<math.h>
int main()
{
	//参数中的角度转弧度【 角度*π/180 ,即 角度*acos(-1)/180 】
	printf("%f\n", sin(0*acos(-1)/180) );	//0°   ~ 0
	printf("%f\n", sin(30*acos(-1)/180) );	//30°  ~ 1/2 
	printf("%f\n", sin(60*acos(-1)/180) );	//60°  ~ (√3)/2
	printf("%f\n", sin(90*acos(-1)/180) );	//90°  ~ 1
	printf("%f\n", sin(120*acos(-1)/180) );	//120° ~ (√3)/2
	printf("%f\n", sin(150*acos(-1)/180) );	//150° ~ 1/2 
	printf("%f\n", sin(180*acos(-1)/180) );	//180° ~ 0
	printf("%f\n", sin(210*acos(-1)/180) );	//210° ~ -(1/2)
	printf("%f\n", sin(240*acos(-1)/180) );	//240° ~ -((√3)/2)
	printf("%f\n", sin(270*acos(-1)/180) );	//270° ~ -1
	printf("%f\n", sin(300*acos(-1)/180) );	//300° ~ -((√3)/2)
	printf("%f\n", sin(330*acos(-1)/180) );	//330° ~ -(1/2)
	printf("%f\n", sin(360*acos(-1)/180) );	//360° ~ 0
	return 0;
}

运行截图

sin输出



2、反正弦函数 asin(x) [数学表示为arcsin(x)]

头文件 #include<math.h>

函数原型 double __cdecl asin(double _X);

函数定义域 [-1,1]

函数值域 [ − π 2 -\frac{\pi}{2} 2π π 2 \frac{\pi}{2} 2π]

arcsinx

arcsin ⁡ ( − 1 ) = − π 2 = − 9 0 ∘ arcsin ⁡ ( − 3 2 ) = − π 3 = − 6 0 ∘ arcsin ⁡ ( − 1 2 ) = − π 6 = − 3 0 ∘ arcsin ⁡ ( 0 ) = 0 = 0 ∘ arcsin ⁡ ( 1 ) = π 2 = 9 0 ∘ arcsin ⁡ ( 3 2 ) = π 3 = 6 0 ∘ arcsin ⁡ ( 1 2 ) = π 6 = 3 0 ∘ {\color{Black} \begin{align*} \arcsin(-1) & = -\frac{\pi}{2}=-90^{\circ} & \arcsin(- \frac{\sqrt{3} }{2}) & = -\frac{\pi}{3}= -60^{\circ} & \arcsin(- \frac{1 }{2}) & = -\frac{\pi}{6}= -30^{\circ} & \arcsin(0) & =0= 0^{\circ} \\[2ex] \arcsin(1) & = \frac{\pi}{2}= 90^{\circ} & \arcsin(\frac{\sqrt{3} }{2}) & = \frac{\pi}{3}= 60^{\circ} & \arcsin(\frac{1 }{2}) & = \frac{\pi}{6}= 30^{\circ} \end{align*} } arcsin(1)arcsin(1)=2π=90=2π=90arcsin(23 )arcsin(23 )=3π=60=3π=60arcsin(21)arcsin(21)=6π=30=6π=30arcsin(0)=0=0

示例程序

#include<stdio.h>
#include<math.h>
int main()
{
	//asin()返回值得到的弧度转角度【 弧度*180/π ,即 弧度*180/acos(-1) 】
	printf("%f\n", asin(-1)*180/acos(-1) );			// -1         ~ -90°
	printf("%f\n", asin(-sqrt(3)/2)*180/acos(-1) );	// -((√3)/2)  ~ -60°
	printf("%f\n", asin(-1.0/2)*180/acos(-1) );		// -(1/2)     ~ -30°
	printf("%f\n", asin(0)*180/acos(-1) );			// 0          ~ 0°
	printf("%f\n", asin(1.0/2)*180/acos(-1) );		// (1/2)      ~ 30°
	printf("%f\n", asin(sqrt(3)/2)*180/acos(-1) );	// (√3)/2     ~ 60°
	printf("%f\n", asin(1)*180/acos(-1) );			// 1          ~ 90°
	return 0;
}

运行截图

arcsin输出



3、双曲正弦函数 sinh(x)

头文件 #include<math.h>

函数原型 double __cdecl sinh(double _X);

函数表达式:(其中e是自然对数的底)

s i n h ( x ) = e x − e − x 2 {\color{Black} sinh(x)=\frac{e^x-e^{-x}}{2}} sinh(x)=2exex

函数定义域 (-∞,+∞)

函数值域 (-∞,+∞)

sinh

sinh ⁡ ( − 30 ) = e ( − 30 ) − e 30 2 sinh ⁡ ( − 10 ) = e ( − 10 ) − e 10 2 sinh ⁡ ( − 1 ) = e ( − 1 ) − e 1 2 sinh ⁡ ( 0 ) = e 0 − e 0 2 sinh ⁡ ( 30 ) = e 30 − e ( − 30 ) 2 sinh ⁡ ( 10 ) = e 10 − e ( − 10 ) 2 sinh ⁡ ( 1 ) = e 1 − e ( − 1 ) 2 {\color{Black} \begin{align*} \sinh (-30) & = \frac{e^{(-30)}-e^{30}}{2} & \sinh (-10) & = \frac{e^{(-10)}-e^{10}}{2} & \sinh (-1) & = \frac{e^{(-1)}-e^{1}}{2} & \sinh (0) & = \frac{e^{0}-e^{0}}{2} \\[3ex] \sinh (30) & = \frac{e^{30}-e^{(-30)}}{2} & \sinh (10) & = \frac{e^{10}-e^{(-10)}}{2} & \sinh (1) & = \frac{e^{1}-e^{(-1)}}{2} \end{align*} } sinh(30)sinh(30)=2e(30)e30=2e30e(30)sinh(10)sinh(10)=2e(10)e10=2e10e(10)sinh(1)sinh(1)=2e(1)e1=2e1e(1)sinh(0)=2e0e0

示例程序

#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;
}

运行截图

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值