Radjah

Untitled

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