View difference between Paste ID: 7TFa4ZiK and S1TeTxJn
SHOW: | | - or go back to the newest paste.
1
   void  Kadr:: APROKS( double * x, double * y, int n, int num)
2
	 /*  вычисление  коэффициентов  полинома
3
             x - массив значений токов
4-
             y - массив вычесленных значений   */
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
  }