У кого-нибудь есть реализация прогнозирования на С++Builder?
От: Nord-Dron Россия  
Дата: 03.06.03 17:32
Оценка:
последняя попытка: у кого есть реализации на С++ алгоритмов прогнозирования, ОЗРВИТЕСЬ!!!
вот шо ес у мэня:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 int iN=8,iM=6,iSign;
 long double dC,dY;
 double *daY=new double[iN];
 double *daX=new double[iN];
 double *daS=new double[iM+1];
 double *daA=new double[iM+1];
// - - - - - - - - - - - - - - -
 long double **daU=new long double*[iM+1];
 for (int j = 0; j <= iM; j++)
  daU[j] = new long double[iM+1];
// - - - - - - - - - - - - - - -
 for(int i=0;i<iN;i++)
 {
  daX[i]=ListBox1->Items->Strings[i].ToDouble();
  daY[i]=ListBox2->Items->Strings[i].ToDouble();
 }
 daS[0]=0.0;
 for(int i=0;i<iN;i++) daS[0]+=daY[i];
 for(int j=1;j<=iM;j++)
 {
  daS[j]=0.0;
  for(int i=0;i<iN;i++)
   {
    if ((daX[i]<0.0)&&((j%2)!=0))iSign=-1; else iSign=1;
    if (daX[i]!=0.0) daS[j]+=daY[i]*exp(logl(fabsl(daX[i]))*j)*iSign;
   }
 }
 for(int i=0;i<=iM;i++)
  for(int j=0;j<=iM;j++)
  {
   daU[i][j]=0.0;
   for(int k=0;k<iN;k++)
   {
    if((daX[k]<0.0)&&((i+j)%2!=0)) iSign=-1; else iSign=1;
    if (daX[k]!=0.0) daU[i][j]+=exp(logl(fabsl(daX[k]))*(j+i))*iSign;
   }
  }
 daU[0][0]=iN;

 for(int k=0;k<iM;k++)//k:=1 to p-1  //p=m+1
  for(int i=k+1;i<=iM;i++)//i:=k+1 to p
  {
   dC=daU[i][k]/daU[k][k];
   daS[i]=daS[k]*dC-daS[i];
   for(int j=k;j<=iM;j++)//j:=k to p
    daU[i][j]=daU[k][j]*dC-daU[i][j];
  }
  daA[iM]=daS[iM]/daU[iM][iM];    //x=daA  a=daU b=daS
  for(int k=iM-1;k>=0;k--)//k:=p-1 downto 1
   {
    dY=0.0;
    for(int i=iM-1;i>=k;i--)// i:=p-1 downto k do
     dY+=daU[k][i+1]*daA[i+1];
    daA[k]=(daS[k]-dY)/daU[k][k];
   }
//daA - &igrave;&agrave;&ntilde;&ntilde;&egrave;&acirc; &ecirc;&icirc;&yacute;&ocirc;&ocirc;&egrave;&ouml;&egrave;&aring;&iacute;&ograve;&icirc;&acirc; a0-am
 for(int i=0;i<=iM;i++) ListBox3->Items->Add(daA[i]);
 for(int j=0;j<iN;j++)
 {
  daS[j]=0.0;
  for(int k=0;k<=iM;k++)
  {
   if ((daX[k]<0.0)&&((k%2)!=0))iSign=-1; else iSign=1;
   if (daX[j]!=0.0) daS[j]+=daA[k]*exp(log(fabs(daX[j]))*k)*iSign;
  }
  ListBox4->Items->Add(daS[j]);
 }
}


ХД ПК

Исправлена подсветка синтаксиса. -- ПК.
08.06.03 11:18: Перенесено модератором из 'C/C++' в Алгоритмы. Изменил название с "delete new int" на теперешнее. — ХД
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.