用迭代法求cosx的表达式,可以先将方程x=cosx改写成x=g(x),其中g(x)是一个合适的函数,例如g(x)=0.5*(x+cosx)。然后给定一个初始值x0,用公式xn+1=g(xn)来逐步计算xn的值,直到满足精度要求。下面是一个用C语言实现的例子:
为南山等地区用户提供了全套网页设计制作服务,及南山网站建设行业解决方案。主营业务为做网站、成都网站设计、南山网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
#include stdio.h
#include math.h
#define EPS 1e-6 //定义精度
int main()
{
double x0,x1; //定义迭代变量
x0 = 0; //给定初始值
do
{
x1 = 0.5 * (x0 + cos(x0)); //计算下一个近似值
if(fabs(x1 - x0) EPS) break; //判断是否满足精度要求
x0 = x1; //更新迭代变量
}while(1);
printf("cosx的表达式为:%.6lf\n", x1); //输出结果,保留6位小数
return 0;
}
我发现了两个错误。把第7行放在第5行下面,倒数第二行这个函数应该是printf而不是print。
更好的方法:你调用了math.h文件中的pow函数,你有没有发现math.h文件中还有三角函数。求cos(x)根本不用这么麻烦,你直接调用cos函数即可。
cos函数的原型:double cos(double angle)
#include "stdio.h"
#include "math.h"
#define PI 3.14156
float cosx(float x);
float fun_cos(float x, int m);
int main()
{
float x = PI/2;
printf("cos(%f)=%f\n",x,cos(x));//使用系统函数cos计算
printf("cosx(%f)=%f\n",x,cosx(x));//使用泰勒公式计算
return 0;
}
float fun_cos(float x, int m)
{
float ret_val;
int i;
if (m%2 == 0)
{ ret_val = 1.0;
}
else
{ ret_val = -1.0;
}
for (i=1;i=2*m;i++)
{ ret_val = ret_val * x/i;
}
return ret_val;
}
float cosx(float x)
{ float ret_val = 1.0;
float temp_ret;
int m = 1;
float Pi = 3.1415926;
if (x 2*Pi || x -2*Pi)
{ x = x-((int)(x/(2*Pi)))*(2*Pi);
}
do
{
temp_ret =fun_cos(x,m++);
ret_val += temp_ret;
}
while (temp_ret0.00005 || temp_ret-0.00005);
return ret_val;
}
1、首先在电脑中打开Dev-C++,接着在打开的操作主页面中,写好头函数#include stdio.h#include math.h。
2、然后在打开的C语言窗口中,写好主函数,如下图所示。
3、主要代码如下,在while中判断某一项的绝对值小于10-6为止就PI的近似值。
4、最后如下图所示,运行之后就完成了。