Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовая робота (мнк).docx
Скачиваний:
71
Добавлен:
03.03.2016
Размер:
2.26 Mб
Скачать
  1. Характеристика данных и их условные обозначения

№ п/п

Наименование данных

Обозначение в блок-схеме

Обозначение в программе

Тип переменных

Размерность массива

n

n

int

Исходный массив значений нагрузок

x,x1

x,x1

double

Исходный массив значений напряжений

y,y1

y,y1

double

Вспомогательные переменные

i,k

i,k

int

Массив значения нагрузок ,при котором необходимо определить значение напряжения

s

s

double

Ожидаемое значение нагрузки

otv,otv1

otv,otv1

double

Переменная выбора действия

j

j

int

Чтение данных из файла

f

f

ifstream

Запись данных в файл

f1

f1

ofstream

Коэффициент наименьших квадратов

a,a1

a,a1

double

11.

Коэффициент корреляции

kof_kor

kof_kor

double

12.

Индекс корреляции

Ind_kor

Ind_kor

double

13.

Суммарная квадратичная ошибка

S,S1

S,S1

double

Таблица 2

  1. Текст программы

#include <iostream>

#include <fstream>

#include <math.h>

#include <conio.h>

#include <clocale>

using namespace std;

int MASS(double *x,double *y ,double **sum,int N, int K,double *a,double *b)

{ int i,j,k,m;double z,c;

for (i=0;i<K+1;i++)

for (j=0;j<K+1;j++)

{

sum[i][j]=0;

for (k=0;k<N;k++)

{sum[i][j]+=pow(x[k],i+j);}

}

for (i=0;i<K+1;i++)

{b[i]=0;

for (k=0;k<N;k++)

{b[i]+=pow(x[k],i)*y[k];}

}

for (i=0;i<K;i++)

{m=i;

for (j=i+1;j<K+1;j++)

{if (fabs(sum[m][i])<fabs(sum[j][i])) m=j;}

for (k=i;k<K+1;k++)

{z=sum[m][k];sum[m][k]=sum[i][k];sum[i][k]=z;}

z=b[m];b[m]=b[i];b[i]=z;

for (j=i+1;j<K+1;j++)

{

c=-sum[j][i]/sum[i][i];

for (k=i;k<K+1;k++)

{sum[j][k]=sum[j][k]+c*sum[i][k];}

b[j]=b[j]+c*b[i];}

}

a[K]=b[K]/sum[K][K];

for (i=K+1-2;i>= 0;i--)

{

for (k=i+1;k<K+1;k++)

{b[i]=b[i]-a[k]*sum[i][k];}

a[i]=b[i]/sum[i][i];

}

return 0;

}

double Kof_kor(double *x,double *y,int n)

{int i;

double sred_x,sred_y,kof_kor,sum_x=0,sum_y=0,*otkl_x,*otkl_y,sum_otkl_x,sum_otkl_y;

double *proizv_rz,stand_otklon_x,stand_otklon_y,*otkl_x2,*otkl_y2,sum_proizv_rz=0;

otkl_x=new double [n];otkl_y=new double [n];proizv_rz=new double [n];otkl_x2=new double [n];otkl_y2=new double [n];

for (i=0;i<n;i++)

{sum_x+=x[i];sum_y+=y[i];}

sred_x=sum_x/n;sred_y=sum_y/n;

for (i=0;i<n;i++)

{otkl_x[i]=sred_x-x[i];otkl_y[i]=sred_y-y[i];}

for (i=0;i<n;i++)

{otkl_x2[i]=pow(otkl_x[i],2);otkl_y2[i]=pow(otkl_y[i],2);}

for (i=sum_otkl_x=sum_otkl_y=0;i<n;i++)

{sum_otkl_x+=otkl_x2[i];sum_otkl_y+=otkl_y2[i];}

stand_otklon_x=pow(sum_otkl_x/n,1/2.);stand_otklon_y=pow(sum_otkl_y/n,1/2.);

for (i=0;i<n;i++)

{proizv_rz[i]=otkl_x[i]*otkl_y[i];}

for (i=0;i<n;i++)

{sum_proizv_rz+=proizv_rz[i];}

kof_kor=sum_proizv_rz/(stand_otklon_x*stand_otklon_y*n);

return kof_kor;

}

double Ind_kor(double *a,double *x,double *y,int n)

{int i;

double sred_y,*yY,*yM,Y,ym=0,yy=0,ind_kor;

yY=new double [n];yM=new double [n];

for (i=0;i<n;i++)

{sred_y+=y[i];}

sred_y=sred_y/n;

for (i=0;i<n;i++)

{

Y=a[0]+a[1]*x[i]+a[2]*pow(x[i],2)+a[3]*pow(x[i],3);

yY[i]=pow(y[i]-Y,2);yM[i]=pow(y[i]-sred_y,2);

}

for (i=0;i<n;i++)

{yy+=yY[i];ym+=yM[i];}

ind_kor=pow(fabs(1-(yy/ym)),1/2.);

return ind_kor;

}

int main ()

{

ifstream f;ofstream f1;

int n=6,k,N=4,i,j=1,n1=3;double **x_mass,*y,*x,*s,*a,*b,*y1,*x1,*a1,*otv,*otv1,kof_kor,ind_kor,*min_y,*min_y1,S=0,S1=0,OTVET;

double sred_y,*yY,*yM,Y,ym=0,yy=0;yY=new double [n];yM=new double [n];

x=new double [n];y=new double [n];a=new double [N];a1=new double [N];b=new double [N];min_y=new double [n];min_y1=new double [n];

x1=new double [n];y1=new double [n];

s=new double [n1];otv=new double [n1];otv1=new double [n1];

x_mass=new double *[N];

for(i=0;i<N;i++)

x_mass[i]=new double [N];

setlocale(LC_CTYPE, "");

cout<<"Выберитеспособвводаданных"<<endl;

cout<<"1)Для считывания с файла нажмите 1"<<endl;

cout<<"2)Для ввода с клавиатуры 2 ";cin>>j;

if (j==1)

{

f.open("C:\\Users\\user\\Desktop\\aium225m4.txt");

cout<<"Значение напряжения "<<endl;

for (i=0;i<n1;i++)

{f>>s[i];cout<<s[i]<<"\t";}

cout<<endl;f>>n;

cout<<"Размерность--"<<n<<endl;

cout<<"Для коэффициентов нагрузки Beta=1"<<endl;

cout<<"Массив напряжения"<<endl;

for (i=0;i<n;i++)

{f>>x[i];cout<<x[i]<<"\t";}

cout<<endl;

cout<<"Массивтокаротора"<<endl;

for (i=0;i<n;i++)

{f>>y[i];cout<<y[i]<<"\t";}

cout<<endl;

cout<<"Длякоэффициентовнагрузки Beta=1.3"<<endl;

cout<<"Массив напряжения"<<endl;

for (i=0;i<n;i++)

{f>>x1[i];cout<<x1[i]<<"\t";}

cout<<endl;

cout<<"Массивтокротора"<<endl;

for (i=0;i<n;i++)

{f>>y1[i];cout<<y1[i]<<"\t";}

cout<<endl;

f.close();

}

else

{

cout<<" Значение напряжения "<<endl;

for (i=0;i<n1;i++)

{cin>>s[i];}

cout<<endl;

cout<<" Введите размерность: ";cin>>n;

cout<<"Для коэффициентов нагрузки Beta=1"<<endl;

cout<<"Массив напряжения"<<endl;

for (i=0;i<n;i++)

{cin>>x[i];}

cout<<endl;

cout<<"Массив тока ротора"<<endl;

for (i=0;i<n;i++)

{cin>>y[i];}

cout<<endl;

cout<<"Длякоэффициентовнагрузки Beta=1.3"<<endl;

cout<<"Массив напряжения"<<endl;

for (i=0;i<n;i++)

{cin>>x1[i];}

cout<<endl;

cout<<"Массив тока ротора"<<endl;

for (i=0;i<n;i++)

{cin>>y1[i];}

cout<<endl;

}

MASS(x,y,x_mass,n,n1,a,b);

MASS(x1,y1,x_mass,n,n1,a1,b);

for (i=0;i<n1;i++)

{otv[i]=a[0]+a[1]*s[i]+a[2]*pow(s[i],2)+a[3]*pow(s[i],3);}

for (i=0;i<n1;i++)

{otv1[i]=a1[0]+a1[1]*s[i]+a1[2]*pow(s[i],2)+a1[3]*pow(s[i],3);}

f1.open("C:\\Users\\user\\Desktop\\rezult.txt");

for (i=0;i<n;i++)

{min_y[i]=a[0]+a[1]*x[i]+a[2]*pow(x[i],2)+a[3]*pow(x[i],3);

min_y1[i]=a1[0]+a1[1]*x1[i]+a1[2]*pow(x1[i],2)+a1[3]*pow(x1[i],3);}

for (i=0;i<n;i++)

{S+=pow(min_y[i]-y[i],2);S1+=pow(min_y1[i]-y1[i],2);}

cout<<"Длякоэффициентовнагрузки Beta=1"<<endl;f1<<" Длякоэффициентовнагрузки Beta=1"<<endl;

cout<<"Выводкоэффициентов A"<<endl;f1<<" Выводкоэффициентов A"<<endl;

for (i=0;i<N;i++)

{cout<<a[i]<<"\t";f1<<a[i]<<"\t";}

cout<<endl;f1<<endl;

for (i=0;i<n1;i++)

{cout<<"При напряжении "<<s[i]<<" тока ротора составляет "<<otv[i]<<endl;f1<<" При напряжении "<<s[i]<<" тока ротора составляет "<<otv[i]<<endl;}

cout<<"Суммарная квадратичная ошибка:"<<S<<endl;f1<<" Суммарная квадратичная ошибка:"<<S<<endl;

cout<<"Средняя ошибка:"<<S/n<<endl;f1<<" Средняя ошибка:"<<S/n<<endl;

cout<<"Относительная ошибка:"<<pow(S,1./n)<<endl;f1<<" Относительная ошибка:"<<pow(S,1./n)<<endl;

kof_kor=Kof_kor(x,y,n);

cout<<"Коэффициенткорреляцииравен "<<kof_kor<<endl;f1<<"Коэффициенткорреляцииравен"<<kof_kor<<endl;

ind_kor=Ind_kor(a,x,y,n);

cout<<"Индекскорреляцииравен "<<ind_kor<<endl;f1<<"Индекскорреляцииравен"<<ind_kor<<endl;

cout<<"Узловые точки"<<endl;f1<<" Узловые точки "<<endl;

for (i=0;i<n;i++)

{

OTVET=a[0]+a[1]*x[i]+a[2]*pow(x[i],2)+a[3]*pow(x[i],3);

cout<<"X["<<i<<"]="<<x[i]<<"\t Y["<<i<<"]="<<y[i]<<"\t Y1["<<i<<"]="<<OTVET<<endl;

f1<<"X["<<i<<"]="<<x[i]<<"\t Y["<<i<<"]="<<y[i]<<"\t Y["<<i<<"]="<<OTVET<<endl; }

cout<<endl;f1<<endl;

cout<<"Длякоэффициентовнагрузки Beta=1.3"<<endl;f1<<"ДлякоэффициентовнагрузкиBeta=1.3"<<endl;

cout<<"Выводкоэффициента A"<<endl;f1<<"ВыводкоэффициентаA"<<endl;

for (i=0;i<N;i++)

{cout<<a1[i]<<"\t";f1<<a1[i]<<"\t";}

cout<<endl;f1<<endl;

for (i=0;i<n1;i++)

{cout<<"При напряжении "<<s[i]<<" ток ротора составляет"<<otv1[i]<<endl;f1<<" При напряжении "<<s[i]<<" ток ротора составляет "<<otv1[i]<<endl;}

cout<<"Суммарная квадратичная ошибка:"<<S1<<endl;f1<<" Суммарная квадратичная ошибка:"<<S1<<endl;

cout<<"Средняя ошибка:"<<S1/n<<endl;f1<<" Средняя ошибка:"<<S1/n<<endl;

cout<<"Относительная ошибка:"<<pow(S1,1./n)<<endl;f1<<" Относительная ошибка:"<<pow(S1,1./n)<<endl;

kof_kor=Kof_kor(x1,y1,n);

cout<<"Коэффициенткорреляцииравен "<<kof_kor<<endl;f1<<"Коэффициенткорреляцииравенí "<<kof_kor<<endl;

ind_kor=Ind_kor(a1,x1,y1,n);

cout<<"Индекскорреляцииравен "<<ind_kor<<endl;f1<<"Индекскорреляцииравен"<<ind_kor<<endl;

cout<<"Узловые точки"<<endl;f1<<" Узловые точки "<<endl;

for (i=0;i<n;i++)

{

OTVET=a[0]+a[1]*x1[i]+a[2]*pow(x1[i],2)+a[3]*pow(x1[i],3);

cout<<"X["<<i<<"]="<<x1[i]<<"\t Y["<<i<<"]="<<y1[i]<<"\t Y1["<<i<<"]="<<OTVET<<endl;

f1<<"X["<<i<<"]="<<x1[i]<<"\t Y["<<i<<"]="<<y1[i]<<"\t Y1["<<i<<"]="<<OTVET<<endl; }

return 0;

}