| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 7444 人关注过本帖
标题:利用泰勒级数逼近sin(x)的值,要求用通项,而非递推,各位高手帮帮忙
取消只看楼主 加入收藏
hhcxx2006
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2011-11-14
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:4 
利用泰勒级数逼近sin(x)的值,要求用通项,而非递推,各位高手帮帮忙
泰勒公式为sin(x)约等于x-x^3/3!+x^5/5!-x^7/7!+x^9/9!……
要求最后一项的绝对值小于10的-6次方,并统计累加了多少项?
  看看我的代码哪里有问题?,请各位看看,帮帮忙改一下
程序代码:
先讲一下我的大概思路,因为要求用通项,而通项中涉及到阶乘和乘方运算,我想利用C语言的函数模块化编程特点,先定义阶乘运算和乘方运算(这个我在 math.h函数库查到了,但还是先看看我的吧)两个函数,然后综合利用将通项表示出来

#include <stdio.h>
#include<math.h>
#define Pi 3.14
int multi(int t) //构建阶乘运算函数
{
    int a=1,b=1;
    while(b<=t)
    {
        a=a*b;
        b=b+1;
    }
    return a;
}
double power(double m,int l) //构建乘方运算函数
{
    double p=m,q;int j=2;
    if(l=1)return m;
    else
    {
        while(j<=l)
        {
            q=p*m;
            p=p*m;
            ++j;
        }
        return q;
    }
}
int main() //主函数
{
    double x,u,sum=0;  //u为通项公式
    int n=1;
    printf("请输入角度:");
    scanf("%lf",&x);
    x=(x/180)*Pi; //将角度数转换成弧度
    u=(power(-1,n+1)*power(x,2n-1))/multi(2n-1);//先求第一项的值
    while (fabs(u)>=1e-6) //再用这个循环应该可以求出来的
    {
        sum+=u;
        n=n+1;
        u=(power(-1,n+1)*power(x,2n-1))/multi(2n-1);
    }
    printf("迭代%d次  sin(%.2f)=%.2f\n",n,x,sum);
}


[ 本帖最后由 hhcxx2006 于 2011-11-14 19:07 编辑 ]
搜索更多相关主题的帖子: 编程 统计 绝对值 C语言 color 
2011-11-14 18:29
hhcxx2006
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2011-11-14
收藏
得分:0 
回复 4楼 waterstar
见笑了,我才刚刚接触这个,属于菜鸟级的,是要把步骤分开写么?
2011-11-14 19:56
hhcxx2006
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2011-11-14
收藏
得分:0 
回复 3楼 beyondyf
谢谢解答,你的也是用的递推,这个我们书上已经给出代码了,能不能就用通项来求,就是利用通项公式分别计算每个累加项,这样确实很麻烦,但书上就是要求实现第二种算法,并比较这两种算法,它提示求当前项时,可用两个内层循环分别求分子和分母,不知道具体该怎么做,求教
2011-11-14 20:04
hhcxx2006
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2011-11-14
收藏
得分:0 
回复 7楼 waterstar
你们讲的都是用迭代法来求,这个书上已经给解答了,书上要求实现第二种算法,通项法,不晓得具体怎么做哦,为什么我这么写编译器会报错?

[ 本帖最后由 hhcxx2006 于 2011-11-14 20:14 编辑 ]
2011-11-14 20:09
hhcxx2006
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2011-11-14
收藏
得分:0 
回复 12楼 waterstar
解决

[ 本帖最后由 hhcxx2006 于 2011-11-14 20:32 编辑 ]
2011-11-14 20:22
快速回复:利用泰勒级数逼近sin(x)的值,要求用通项,而非递推,各位高手帮帮忙
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.013479 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved