| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 393 人关注过本帖
标题:关于浮点数如何照原样输出,以及浮点数精度对计算结果影响的问题
取消只看楼主 加入收藏
xjy13121556
Rank: 2
等 级:论坛游民
帖 子:10
专家分:20
注 册:2014-4-19
结帖率:66.67%
收藏
 问题点数:0 回复次数:1 
关于浮点数如何照原样输出,以及浮点数精度对计算结果影响的问题
Logistic映射是混沌学中的例子,指的是如下迭代计算:x[n+1]=k*x[n]*(1-x[n]).   0<k<=4   取x[0]=0.5.
对于某些给定的k,这个迭代过程可能收敛到一个点,即x=k*x*(1-x),该点被称为不动点,或者周期为1的点,此时称迭代的周期为1.
对于某些给定的k,这个迭代过程可能在两个点来回跳动,则称迭代的周期为2;依次类推。
【注】从初值起,需要经过一定次数(假定10000次)的迭代计算才能接近周期点。
给定参数,计算Logistic迭代的周期数(周期数小于1024时)或-1(周期数大于或等于1024时)。
输入样例                     输出样例
2.95                          Case 1: 2.95, 1
3.01                          Case 2: 3.01, 2
3.45                          Case 3: 3.45, 4
3.564                         Case 4: 3.564, 8
3.569945                      Case 5: 3.569945, 512
3.569946                      Case 6: 3.569946, -1
3.83                          Case 7: 3.83, 3
程序代码:
#include<stdio.h>
int main()
{
    double n,x[1026];
    int i=1,j=1;
    while(scanf("%lf",&n)==1)
    {
        j=1;
        x[0]=0.5;
        printf("Case %d: ",i++);
        for(j=1;j<=10000;j++)
            x[0]=n*x[0]*(1-x[0]);
        for(j=1;j<1026;j++)
        {
            x[j]=n*x[j-1]*(1.0-x[j-1]);
            if(j==1025)
                printf("%g, -1\n",n);
            else

            {
                if(fabs(x[j]-x[0])<=1e-10)
                {
                    printf("%g, %d\n",n,j);
                    break;
                }
            }
        }
    }
    return 0;
}
3.569945,3.569946这两个数字用%g输出都是3.56995,有什么办法让它照原样输出。另外3.569945, 3.569946的结果都是-1,但是3.569945结果应该是512,这跟浮点数的误差有关吗,该怎么修改。还有该怎么减少内存占用,貌似我的程序超过判题系统的限制内存大小。

搜索更多相关主题的帖子: 影响 如何 
2014-07-06 15:02
xjy13121556
Rank: 2
等 级:论坛游民
帖 子:10
专家分:20
注 册:2014-4-19
收藏
得分:0 
本人已解决
2014-07-06 15:25
快速回复:关于浮点数如何照原样输出,以及浮点数精度对计算结果影响的问题
数据加载中...
 
   



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

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