代码:
#include "stdio.h"
#include "math.h"
#include "iostream"
using namespace std;
int main(){
int n=40;
float xx;//预测值
int N=3;//权数个数
float k=0.00652f;//调整系数
float w[3]={0.33f,0.33f,0.33f};//权数
float mse1=0,mse2=1;//方差
int i,j;
int nums=0;
float result=0.0;
while (1)
{
mse1=0;
for(i=N;i<n;i++)
{
xx=0;
for(j=0;j<N;j++)
xx+=w[j]*x[i-j-1];
for(j=0;j<N;j++)
w[j]+=2*k*(x[j]-xx)*x[i-j-1];
mse1+=(x[i]-xx)*(x[j]-xx);
}
nums++;
mse1=sqrt(mse1/(n-N-1));
if(mse2!=0)
{
if(mse1/mse2>0.999&&mse1/mse2<1.001) break;
mse2=mse1;
}
}
for(j=0;j<N;j++)
result+=w[j]*x[i-j-1];
cout<<"权数"<<w[0]<<" "<<w[1]<<endl;
cout<<"预测值"<<result<<endl;
cout<<"轮数:"<<nums<<endl;
return 0;
}
显示没有错误:
但是运行窗口一直是这样没有东西:
编译后运行可以出结果的(取其中10个数)运行:
F:\2022\pythontest>g++ t1.cpp -o t0301.exe
F:\2022\pythontest>t0301.exe
权数-88.9579 29.0926
预测值20.3903
轮数:1006