C语言中要编写sin函数,实质上要利用sin的泰勒公式,然后根据泰勒公式,将其中的每一项进行分解,最后用循环,累加计算出最终结果
下面用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泰勒公式中的每一项拆成了分子,分母以及每一项前的符号这三项,以便于每一项的累加
这个是库函数吧
只有有说明就可以用了,你试一下,不用包含 math.h
直接写一个声明,double _Cdecl sin (double x);
就可以用了
库函数没有源文件可以看的,只有二进制可执行代码
连接时,加到你的程序中。
这是编译器提供的。
--------------------
补充一下
楼主问的是 sin 这个函数,CPU是如何实现的
CPU能做加减乘除还有逻辑运算
不知道楼主有没有学过极数?
把sin(x)按 泰勒极数展开,可以变在一个 sin(x)=f(x)
f(x) 是一个关于x的加减乘除的函数,极数无限的
当然,极数越多,精度越高,运算量越大
计算机取有限极数,作近似计算即可
sin(x)=x-x^3/3!+x^5/5!-x^7/!+....
sin(x)泰勒公式
可以变在一个 sin(x)=f(x)
f(x)
是一个关于x的加减乘除的函数,极数无限的
当然,极数越多,精度越高,运算量越大
计算机取有限极数,作近似计算即可
泰勒公式展开