zoukankan      html  css  js  c++  java
  • 精度问题和类型转换问题

    #include<iostream>
    #include<fstream>
    #include<string>
    using namespace std;
    void main()
    {
    	string str;
    	char *s;//读取文件中的字符串
    	double **Yto;//周期分组
    	double *Y;//数据
    	double *Yi; //均值
    	double *ss;    //方差
    	double *sk;      //平方差
    	int L;      //周期数
    	int count=0;
    	ifstream read("data.dat");//打开文件
    	while(!read.eof())
    	{
    		read>>str;
    		count++;          //计算文件行数
    	}
    	read.close();       //关闭文件
    	s=new char[15];
    	Y=new double[count];
    	ofstream dd("out.dat");
    	ifstream r("data.dat");
    	int i=0;         //数组下标
    	while(!r.eof())
    	{
    		r>>s;
    		Y[i]=atof(s);      //将char 转换为double
    		i++;
    	}
    	r.close();
    	int kk=0;
    	ss=new double[66-2+1];
    	sk=new double[66-2+1];
    	double temp;      //平均方差最小缓存
    	int km=0;        //平均方差最小所对应的周期
    	for(int k=2;k<66;k++)          //分组
    	{
    		L=(count-1)/k;
    		Yto=(double **)new double *[L];
    		for(int j=0;j<L;j++)
    		{
    			Yto[j]=new double[k];
    		}
    		int n=0;
    		for(int m=0;m<L;m++)
    		{
    			for(int mm=0;mm<k;mm++)
    			{
    				Yto[m][mm]=Y[n];
    				n++;
    			}
    		}
    		Yi=new double[k];
    		for(int nn=0;nn<k;nn++)
    		{
    			double sum=0;
    		    for(int m=0;m<L;m++)
    		    {
    			   sum+=Yto[m][nn];
    		     }
    			Yi[nn]=(double)sum/(L+1);      //求均值
    			dd<<"均值Y"<<nn<<"为"<<Yi[nn]<<endl;
    		}
    		ss[kk]=0;
    		sk[kk]=0;
    		for(int nn=0;nn<k;nn++)       //求方差
    		{
    			double ssum=0;
    			for(int m=0;m<L;m++)
    			{
    				ssum+=(Yto[m][nn]-Yi[nn])*(Yto[m][nn]-Yi[nn]);
    			}
    			ss[kk]+=ssum;
    		}
    		dd<<"周期为"<<k<<"的方差为"<<ss[kk]<<endl;
    		sk[kk]=(double)ss[kk]/L;
    		dd<<"平均方差为"<<sk[kk]<<endl;
    		if(kk==0)          //选择最小平均方差
    		{
    			temp=sk[kk];km=k;
    		}
    		if(kk>0&&temp>sk[kk])
    		{
    			temp=sk[kk];
    			km=k;
    		}
    		kk++;
    	}
    	dd<<"最小平均方差所对应的周期为"<<km<<endl;
    	dd.close();
    	
    	system("pause");
    }
    

  • 相关阅读:
    Pro ASP.NET Core MVC2
    vscode
    git命令使用
    单行函数
    过滤和排序
    oracle基本查询
    斐波那契数列的递归实现
    队列的顺序存储结构
    队列的链式存储结构
    折半查找法
  • 原文地址:https://www.cnblogs.com/zztong/p/6695290.html
Copyright © 2011-2022 走看看