Radjah

Untitled

Nov 20th, 2012
223
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.    void  Kadr:: APROKS( double * x, double * y, int n, int num)
  2.      /*  вычисление  коэффициентов  полинома
  3.              x - массив значений токов
  4.              y - массив вычесленных значений
  5.          n - количество замеров
  6.          num - номер канала   */
  7.  {
  8.     char YN; // Ответ на запрос
  9.     double A,B; // Попроавочный коэффициент
  10.     int i,j,k,m1,k1; // Счетчики
  11.     int m=2; // (Количество коэффициентов) - 1 ?
  12.     double r,s; // Накполение чего-то там
  13.     double a[10][11];
  14.     double c[11]; // Тарировка
  15.     double q[200];
  16.  
  17. // Задать массив и забить его нулями. Размерность - количество коэффициентов
  18.     for(i=0;i<=10;i++)   c[i]=0;
  19.     n--;
  20.  
  21. // Задать массив и забить его единицами. Размерность - количество коэффициентов
  22.     for(i=0;i<=n;i++)    q[i]=1;
  23. // Расчет
  24.     for(i=0;i<=m;i++)
  25.       {
  26.     s=0;   r=0;
  27.     for(j=0;j<=n;j++)
  28.       {
  29. // Сумма единиц o_0
  30.         s=s+q[j];
  31. // 0+1*значение o_0
  32.         r=r+q[j]*y[j];
  33. // Можно тупо взять массив из параметров
  34.         q[j]=q[j]*x[j];
  35.       }
  36. // Номер?
  37.     a[0][i]=s;
  38. // Запись значения
  39.     a[i][m+1]=r;
  40.       }
  41. // конец цикла
  42.  
  43.  
  44.     for(i=1;i<=m;i++)
  45.       {
  46.     s=0;
  47.     for(j=0;j<=n;j++)
  48.       {
  49.        if(j<m)   a[i][j]=a[i-1][j+1];
  50.        s=s+q[j];
  51.        q[j]=q[j]*x[j];
  52.       }
  53.     a[i][m]=s;
  54.       }
  55. // конец цикла
  56.  
  57.  
  58.      m1=m+1;
  59.      for(k=0;k<=m;k++)
  60.        {
  61.      k1=k+1;
  62.      s=a[k][k];
  63.      for(j=k1;j<=m1;j++)       a[k][j]=a[k][j]/s;
  64.     // конец цикла
  65.  
  66.      for(i=k1;i<=m;i++)
  67.        {
  68.          r=a[i][k];
  69.          for(j=k1;j<=m1;j++)   a[i][j]=a[i][j]-a[k][j]*r;
  70.        }
  71.     // конец цикла
  72.     }
  73. // конец цикла
  74.  
  75.     for(i=m;i>=0;i--)
  76.        {
  77.          s=a[i][m1];
  78.           for(j=i+1;j<=m;j++)
  79.            {
  80.          s=s-a[i][j]*c[j];
  81.         }
  82.           c[i]=s;
  83.         }
  84.  
  85. // Запись результатов
  86.        TORA[num*3]=c[0];
  87.        TORA[num*3+1]=c[1];
  88.        TORA[num*3+2]=c[2];
  89. // Ввод поправочных коэффициентов
  90.    cout<<"\n\n Надо вводить попpавочные коэффициент  a*x ? ( Y/N ) : ";
  91.     cin>>YN;
  92.     if( YN == 'Y' || YN == 'y' )
  93.      {
  94.        cout<<"\n введите коэффициент пpи линейном члене :  ";
  95.        cin>>A;
  96. // Домножение
  97.        TORA[num*3] *= A;
  98.        TORA[num*3+1] *= A;
  99.        TORA[num*3+2] *= A;
  100.      }
  101.   }
Advertisement
Add Comment
Please, Sign In to add comment