Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void Kadr:: APROKS( double * x, double * y, int n, int num)
- /* вычисление коэффициентов полинома
- x - массив значений токов
- y - массив вычесленных значений */
- {
- char YN; // Ответ на запрос
- double A,B; // Попроавочный коэффициент
- int i,j,k,m1,k1; // Счетчики
- int m=2; // (Количество коэффициентов) - 1 ?
- double r,s; // Накполение чего-то там
- double a[10][11];
- double c[11]; // Тарировка
- double q[200];
- // Задать массив и забить его нулями. Размерность - количество коэффициентов
- for(i=0;i<=10;i++) c[i]=0;
- n--;
- // Задать массив и забить его единицами. Размерность - количество коэффициентов
- for(i=0;i<=n;i++) q[i]=1;
- // Расчет
- for(i=0;i<=m;i++)
- {
- s=0; r=0;
- for(j=0;j<=n;j++)
- {
- // Сумма единиц o_0
- s=s+q[j];
- // 0+1*значение o_0
- r=r+q[j]*y[j];
- // Можно тупо взять массив из параметров
- q[j]=q[j]*x[j];
- }
- // Номер?
- a[0][i]=s;
- // Запись значения
- a[i][m+1]=r;
- }
- // конец цикла
- for(i=1;i<=m;i++)
- {
- s=0;
- for(j=0;j<=n;j++)
- {
- if(j<m) a[i][j]=a[i-1][j+1];
- s=s+q[j];
- q[j]=q[j]*x[j];
- }
- a[i][m]=s;
- }
- // конец цикла
- m1=m+1;
- for(k=0;k<=m;k++)
- {
- k1=k+1;
- s=a[k][k];
- for(j=k1;j<=m1;j++) a[k][j]=a[k][j]/s;
- // конец цикла
- for(i=k1;i<=m;i++)
- {
- r=a[i][k];
- for(j=k1;j<=m1;j++) a[i][j]=a[i][j]-a[k][j]*r;
- }
- // конец цикла
- }
- // конец цикла
- for(i=m;i>=0;i--)
- {
- s=a[i][m1];
- for(j=i+1;j<=m;j++)
- {
- s=s-a[i][j]*c[j];
- }
- c[i]=s;
- }
- // Запись результатов
- TORA[num*3]=c[0];
- TORA[num*3+1]=c[1];
- TORA[num*3+2]=c[2];
- // Ввод поправочных коэффициентов
- cout<<"\n\n Надо вводить попpавочные коэффициент a*x ? ( Y/N ) : ";
- cin>>YN;
- if( YN == 'Y' || YN == 'y' )
- {
- cout<<"\n введите коэффициент пpи линейном члене : ";
- cin>>A;
- // Домножение
- TORA[num*3] *= A;
- TORA[num*3+1] *= A;
- TORA[num*3+2] *= A;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment