| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 480 人关注过本帖
标题:一道数学有关函数的习题
只看楼主 加入收藏
seep666
Rank: 2
等 级:论坛游民
帖 子:91
专家分:14
注 册:2010-3-18
结帖率:62.07%
收藏
已结贴  问题点数:11 回复次数:4 
一道数学有关函数的习题
编写函数fun,其功能是:订算出输出下死多项值的和,直到|Sn-Sn-1|<0.000001为止。
Sn=1+0.5*x+0.5(0.5-1)*x2/2!+0.5(0.5-1)(0.5-2)*x3/3!+.0.5(0.5-1)(0.5-2)(0.5-3)*x4/4!+.......0.5(0.5-1).....(0.5-n+1)*xn/n!
下面是我的做的,运行时都是0,请大哥,大姐指教

#include"stdio.h"
#include"math.h"
double fun(double x)
{  
double s1,s2=0,i,j,k,n;           
   s1=1+0.5*x;           //s1是前两项的和
 for(n=1;n<20;n++)            
 {
   i=1;j=0.5*x;
   while(i<n)                     //先求分母的值,
       j=j*(0.5-(i++))*x;
     i=0;
     while(i<=n)                  \\分子的值
         k=k*(i++);
         s2=s1+(j/k);
         if(abs(s2-s1)>0.000001)
             break;
         else
             s1=s2;
 }
        return s2;
}
  void main()
  {
    double x=0.21,s;
    s=fun(x);
    printf("%ld",s);
  }

搜索更多相关主题的帖子: 数学 习题 函数 
2010-08-22 10:11
key8714
Rank: 2
等 级:论坛游民
帖 子:48
专家分:87
注 册:2010-6-9
收藏
得分:5 
x的n 次方好像不对吧,double pow( double x, double y );
2010-08-22 11:23
S_12s
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:110
专家分:670
注 册:2010-7-21
收藏
得分:5 
#include"stdio.h"
#include"math.h"
double fz(int n,double x)//计算单个子表达式分子的值
{
    double sum=0.5;
    double temp=x;
    for(;n>=1;n--)
    {
        sum*=0.5-n+1;
        temp*=x;
    }
    return sum*temp;
}
int fm(int n)    //计算单个子表达式分母的值
{
    int temp=1;
    while(n>1)
    {
        temp*=n;
        n--;
    }
    return temp;
}

double sn(double x,int n)
{
    double sum=1;
    if(n==1)
        return 1+0.5*x;
   
    while(n>=1)
    {
        sum+=fz(n,x)/fm(n);
        n--;
    }
    return sum;
}


void main()
{
    double s1=0,s2=0,x=2;    //x是对应表达式中的x
    double N=0.6;            //精度
    int n=1;            //对应表达式中的n
    //s1=sn(2,2);    //1.5
    //s2=sn(2,3);    //2
    while(1)
    {
        s1=sn(x,n);
        s2=sn(x,n+1);
        printf("n=%d  s1=%f   s2=%f\n",n,s1,s2);
        if(fabs(s2-s1-1)<N)
        {
            printf("%f-%f-1=%f<0.000001\n",s2,s1,s2-s1-1);
            break;
        }
        n++;
    }   
}

有问题,加群24424162
2010-08-22 14:56
S_12s
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:110
专家分:670
注 册:2010-7-21
收藏
得分:0 
给个建议啊,注意下,模块化编程。。。
2010-08-22 14:57
S_12s
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:110
专家分:670
注 册:2010-7-21
收藏
得分:0 
上面那个程序好像错了!以下是我对你的程序的修改,你看一下,好像有些数是没结果的……水平有限……
#include"stdio.h"
#include"math.h"


double fun(double x)
{  
    double s1,s2=0,j;
    int i,k,n;           
    s1=1;           
    for(n=1,j=1;n<30;n++)            
    {
       i=1;
       while(i<=n)                    
       {
           j=j*(0.5-i+1)*x;
           i++;
       }
       k=1;
        i=1;
        while(i<=n)                 
        {
             k=k*i;
             i++;
        }

         s2=s1+(j/k);
         if(fabs(s2-s1)<0.000001)
         {
             printf("s1=%lf\t%lf\n",s1,s2-s1);
             break;
         }
         else
             s1=s2;
    }
    return s2;
}
void main()
{
    double x,s;
    printf("请输入X:  ");
    scanf("%lf",&x);
    while (x!=0)
    {
        s=fun(x);
        printf("%lf\n",s);
        printf("请输入X:  ");
        scanf("%lf",&x);
    }
}
2010-08-22 15:52
快速回复:一道数学有关函数的习题
数据加载中...
 
   



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

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