[STM32F1] 用c语言编正弦函数计算

[复制链接]
1183|4
 楼主| ulystronglll 发表于 2024-6-30 14:20 | 显示全部楼层 |阅读模式
1、C语言中要编写62616964757a686964616fe58685e5aeb931333337613837sin函数,实质上要利用sin的泰勒公式,然后根据泰勒公式,将其中的每一项进行分解,最后用循环,累加计算出最终结果。

2、下面用for循环实现sin的算法,程序代码如下:#include

#include

void main()

{

int  i;

float  x,sum,a,b;  //sum代表和,a为分子,b为分母

char s;

printf("please input x");

scanf("%f",&x);

s=1;

sum=0;

a=x;     //分母赋初值

b=1;     //分子赋初值

for(i=1;a/b>=1e-6;i++)

{

sum=sum+s*a/b;    //累加一项

a=a*x*x;     //求下一项分子

b=b*2*i*(2*i+1);   //求下一项分母

s*=-1;

}

printf("sum=%f\n",sum);

}

3、  关于上述程序的几点说明:上述程序的计算结果精确到小数点后六位;上述程序运用了sin的泰勒展开式 sin x=x-x^3/3!+x^5/5! ...... ,程序中将sin泰勒公式中的每一项拆成了分子,分母以及每一项前的符号这三项,以便于每一项的累加。


wang6623 发表于 2024-6-30 14:59 | 显示全部楼层
泰勒级数

变量定义和输入:

x:待计算正弦值的角度(以弧度为单位)。
sum:用于累加泰勒级数各项的和。
a:泰勒级数中当前项的分子。
b:泰勒级数中当前项的分母。
s:每一项的符号,交替为正负。
wang6623 发表于 2024-6-30 15:00 | 显示全部楼层
输入角度值:

用户通过输入函数输入一个角度值 x,然后计算其正弦值的近似值。
理想阳 发表于 2024-6-30 15:26 | 显示全部楼层
你这个写法奇怪的。
suncat0504 发表于 2024-6-30 21:54 | 显示全部楼层
没有专用的数学库吗?精确度如何?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

21

主题

1468

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部