| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 710 人关注过本帖, 1 人收藏
标题:数值积分-梯形公式,看看谁找出错误最快
只看楼主 加入收藏
梁朝斌
Rank: 4
等 级:业余侠客
帖 子:192
专家分:288
注 册:2012-10-21
结帖率:100%
收藏(1)
已结贴  问题点数:20 回复次数:11 
数值积分-梯形公式,看看谁找出错误最快
#include<stdio.h>
#include<math.h>
#define maxsize 100
#define eps 0.000001
int main(void)
{
    double a,b,t,x[maxsize],step,s0,s1,f();
    int i,n;

    printf("please input a= and b=\n");
    scanf("%d %d",&a,&b);

    n=1;
    s0=(f(a)+f(b))*(b-a)/2;
    do
    {
            step=(b-a)/n;
        for(i=0;i<n;i++)
        {
        
            x[i]=a+i*step;
            s1=0;
            
                for(i=1;i<=n;i++)
                    s1+=(f(x[i+1])+f(x[i]))*step/2;
                    t=s0;
                    s0=s1;
                    n=n+1;
               
        
        }
        
    }
    while (fabs(s0-t)>eps);
    {
        printf("s0=%lf",s0);
        printf("此时步长为:%d",n);
        printf("\n");
    }
    return 0;
}
double f(double m)
{
    double y;
    y=sqrt(1+pow(m,2));
    return y;
}
   

   
搜索更多相关主题的帖子: include please 
2012-11-20 22:26
青春无限
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江苏
等 级:贵宾
威 望:24
帖 子:3452
专家分:19340
注 册:2012-3-31
收藏
得分:4 
看看

学 会看代码…学习写程序…学会搞开发…我的目标!呵呵是不是说大话啊!!一切皆可能
2012-11-20 22:48
梁朝斌
Rank: 4
等 级:业余侠客
帖 子:192
专家分:288
注 册:2012-10-21
收藏
得分:0 
你怎么不帮我分析分析

菜鸟也疯狂
2012-11-20 22:50
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:4 
你自己能先调试吗?把一堆问题让别人解决,自己能学到啥呢?

总有那身价贱的人给作业贴回复完整的代码
2012-11-20 23:16
梁朝斌
Rank: 4
等 级:业余侠客
帖 子:192
专家分:288
注 册:2012-10-21
收藏
得分:0 
就像你签名那样,我调试了很久了,做不出来才发帖问的,正是自己想尽了办法再找不出那里错了,才来这里问的,这样才能很快解决自己问题

菜鸟也疯狂
2012-11-20 23:22
梁朝斌
Rank: 4
等 级:业余侠客
帖 子:192
专家分:288
注 册:2012-10-21
收藏
得分:0 
感谢二楼,但是我已经调试几个小时了,没有错误和警告但是逻辑上错误了,这是我还不能解决的,我想靠大家的帮助从中有所感悟

菜鸟也疯狂
2012-11-20 23:31
fu2751653
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:38
专家分:100
注 册:2011-4-11
收藏
得分:4 
觉得问题好像蛮多的,貌似没有进行函数声明或者函数声明有问题,double f()怎么直接这样,建议把f()函数放到main函数前,然后把main函数里面的f()删除了
2012-11-21 00:16
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:0 
a和b都是double型的,你上来就是
 scanf("%d %d",&a,&b);
另外你的代码能编译过吗?我很怀疑,身边没电脑,没动手试过

总有那身价贱的人给作业贴回复完整的代码
2012-11-21 09:26
梁朝斌
Rank: 4
等 级:业余侠客
帖 子:192
专家分:288
注 册:2012-10-21
收藏
得分:0 
我编译过了,没有错误,我是学计算机的,谢谢你,按你说的修改了,但是答案没出来

菜鸟也疯狂
2012-11-21 12:59
梁朝斌
Rank: 4
等 级:业余侠客
帖 子:192
专家分:288
注 册:2012-10-21
收藏
得分:0 
#include<stdio.h>
#include<math.h>
#define maxsize 100
#define eps 0.000001
int main(void)
{
    double a,b,t,x[maxsize],step,s0,s1,f();
    int i,n;

    printf("please input a= and b=\n");
    scanf("%lf  %lf",&a,&b);

    n=1;
    s0=(f(a)+f(b))*(b-a)/2;
    do
    {
            n=n+1;
            step=(b-a)/n;
        for(i=0;i<n;i++)
        {
        
            x[i]=a+i*step;
            s1=0;
                for(i=1;i<=n;i++)
                {
                    s1+=(f(x[i+1])+f(x[i]))*step/2;
                }
                    t=s0;
                    s0=s1;
               
                    
        
        }
        
    }
    while (fabs(s0-t)>eps);
    {
        printf("s0=%lf\n",s0);
        printf("此时步长为:%d",n);
        printf("\n");
    }
    return 0;
}
double f(double m)
{
    double y;
    y=sqrt(1+pow(m,2));
    return y;
}
   

   

菜鸟也疯狂
2012-11-21 13:04
快速回复:数值积分-梯形公式,看看谁找出错误最快
数据加载中...
 
   



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

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