⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dlg_zhishu.cpp

📁 数据分析系统主要研究大量的数据
💻 CPP
字号:
// Dlg_zhishu.cpp : implementation file
//

#include "stdafx.h"
#include "dataanalisis.h"
#include "Dlg_zhishu.h"
#include "math.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CDlg_zhishu dialog


CDlg_zhishu::CDlg_zhishu(CWnd* pParent /*=NULL*/)
	: CDialog(CDlg_zhishu::IDD, pParent)
{
	//{{AFX_DATA_INIT(CDlg_zhishu)
	//}}AFX_DATA_INIT
}


void CDlg_zhishu::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CDlg_zhishu)
	DDX_Control(pDX, IDC_EDIT_zpy, m_zpy);
	DDX_Control(pDX, IDC_EDIT_zpx, m_zpx);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CDlg_zhishu, CDialog)
	//{{AFX_MSG_MAP(CDlg_zhishu)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDlg_zhishu message handlers

double minmeax=0,minmeay=0;
double predictx,predicty;//预测值

double zhishupinghua(double x3[],double y3[],int n);

void CDlg_zhishu::OnOK() 
{
	// TODO: Add extra validation here

	extern int n;
	extern double x3[],y3[];
	char cResult1[10];
	char cResult2[10];
	zhishupinghua(x3,y3,n);
	_gcvt(predictx,10,cResult1);
	GetDlgItem(IDC_EDIT_zpx)->SetWindowText(cResult1);

	_gcvt(predicty,10,cResult2);
	GetDlgItem(IDC_EDIT_zpy)->SetWindowText(cResult2);
	//CDialog::OnOK();
}
//////////////////////////////////////////////////////////////////
/////指数平滑模块/////
const int M=100;
double meax[M],meay[M];
double predictX[M],predictY[M];//数组存储预测值
double MEA(double s[],double t[],int n,double a6);

double zhishupinghua(double x3[],double y3[],int n)
{   
	double a6; 
	a6=0.25;  MEA(x3,y3,n,a6);
    a6=0.5;   MEA(x3,y3,n,a6);
    a6=0.75;  MEA(x3,y3,n,a6);
	minmeay=meay[0];
   	if(minmeay<meay[1])  minmeay=meay[1];//比较meay取最小值以判断a6的值
	if(minmeay<meay[2])  minmeay=meay[2];

	predictX[0]=(x3[1]+x3[2]+x3[3])/3;
    predictY[0]=(y3[1]+y3[2]+y3[3])/3;

	if(minmeay==meay[0])//根据合适的a6求出预测值
	{
		a6=0.25;
		for(int i=1;i<=n;i++)
		{ 
			predictX[i]=a6*x3[i-1]+(1-a6)*predictX[i-1];
			predictY[i]=a6*y3[i-1]+(1-a6)*predictY[i-1];
		}
		predictx=predictX[n];
		predicty=predictY[n];
	}

	if(minmeay==meay[1])//根据合适的a6求出预测值
	{
		a6=0.5;
		for(int i=1;i<=n;i++)
		{ 
			predictX[i]=a6*x3[i-1]+(1-a6)*predictX[i-1];
			predictY[i]=a6*y3[i-1]+(1-a6)*predictY[i-1];
		}
		predictx=predictX[n];
		predicty=predictY[n];
	}

	if(minmeay==meay[2])//根据合适的a6求出预测值
	{
		a6=0.75;
		for(int i=1;i<=n;i++)
		{ 
			predictX[i]=a6*x3[i-1]+(1-a6)*predictX[i-1];
			predictY[i]=a6*y3[i-1]+(1-a6)*predictY[i-1];
		}
		predictx=predictX[n];
		predicty=predictY[n];
	}

	return predictx;
	return predicty;
}
///////////////////////////////////////////////////////////////////////////////////
///////计算mea[]的值////////
int q=0;
double MEA(double s[],double t[],int n,double a6)
{
	double X[M],Y[M];//数组X[N]和Y[N]存储Xt和Yt的预测值
    double sumx=0,sumy=0;	
    X[0]=(s[1]+s[2]+s[3])/3;
    Y[0]=(t[1]+t[2]+t[3])/3;
    for(int i=1;i<=n;i++)
    { 
        X[i]=a6*s[i-1]+(1-a6)*X[i-1];
        Y[i]=a6*t[i-1]+(1-a6)*Y[i-1];
    }
    for(int j=0;j<n;j++)
    {
        sumx+=fabs(s[j]-X[j]);
        sumy+=fabs(s[j]-Y[j]);
    }
    meax[q]=sumx/n;
    meay[q++]=sumy/n;
    return meax[M];
    return meay[M];
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -