Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Бакалаврская работа Сорокин.doc
Скачиваний:
9
Добавлен:
28.10.2018
Размер:
6.61 Mб
Скачать

Список литературы

  1. В.Н. Козлов, С.В. Хлопин. Математические и информационные модели теплофизических процессов. Санкт-Петербург, изд. Политехнического университета, 2010 г. 189 стр.

  2. В.Н. Козлов, В.Е. Куприянов, В.С. Забородский. Вычислительные методы синтеза систем автоматического управления. Ленинград, изд. Ленинградского университета. 1989 г. 224стр.

  3. Козлов В.Н., Хлопин С.В. Обобщенные модели теплопроводности. Материалы X Всероссийской конференции по проблемам науки и высшей школы Cб. Фундаментальные исследования в технических университетах». Санкт-Петербург. – СПб.: СПбГПУ, 2006. –578 с. Стр. 62-63.

  4. Козлов В.Н., Магомедов К.А., Хлопин С.В. Операторно-функицональный метод моделирования тепловых процессов. Материалы VIII Всероссийской конференции по проблемам науки и высшей школы. Cб. «Фундаментальные исследования в технических университетах». Санкт-Петербург. – СПб.: СПбГПУ, 2004г, 394с. Стр. 15-17

  5. Даугавет И.К. Теория приближенных методов. Линейные уравнения. Санкт-Петербург, изд. «БХВ-Петербург, 2006 год»

  6. Самарский А.А, Вабищевич П.Н. Вычислительная теплопередача, Москва, изд. УРСС, 2003 г. 784 с.

Приложения Приложение 1. Листинг кода кусочно-линейного оператора.

void MathR()

{

//результирующая матрица(α=M^(-1)*CoefList)

R=new double*[TempSize];

for(int i=0;i<TempSize;i++)

{

R[i]=new double [MaterialsSize];

}

M=new double* [TempSize]; //Матрица разниц температур

Mtr=new double* [TempSize]; //инвертированная матрица M

for(int i=0;i<TempSize;i++)

{

M[i]=new double [TempSize];

Mtr[i]=new double [TempSize];

}

for(int i=0;i<TempSize;i++)

{

for(int j=0;j<TempSize;j++)

{

//Расчет значений

M[i][j]=fabs(Temperatures[i]-Temperatures[j]);

Mtr[i][j]=M[i][j];//Создание копии

}

}

invers(Mtr,TempSize);//Инвертируем копию

//перемнажаем M^(-1) и CoefList:

MatrixMultiplication(Mtr,TempSize,TempSize,CoefList,TempSize,MaterialsSize,R);

}

double CDesignView::CalcLocalCoef(double X, double Y, double Z, double cT)

{

double SUMM=0;//конечный результат

double iterat=0;//результат за итерацию

int MatIndex=(int)Funk3(X,Y,Z);//индекс материала в точке

for(int j=0;j<TempSize;j++)

{

iterat=CoefList[j][MatIndex]*(cT-Temperatures[j]);

SUMM+=iterat;

}

return SUMM;

}

Листинг 1.Код кусочно-линейного оператора

Приложение 2. Листинг кода кусочно-постоянного оператора.

void MathAlpha()

{

for(int i=0;i<YSize;i++)

{

for(int j=0;j<ZSize;j++)

{

Alpha1[0][i][j]=(M_at_point[0][i][j]+M_at_point[XSize-1][i][j])/2;

for(int n=1;n<XSize;n++)

{

Alpha1[n][i][j]=(M_at_point[n][i][j]-M_at_point[n-1][i][j])/2;

}

}

}

for(int k=0;k<XSize;k++)

{

for(int j=0;j<ZSize;j++)

{

Alpha2[k][0][j]=(Alpha1[k][0][j]+Alpha1[k][YSize-1][j])/2;

for(int m=1;m<YSize;m++)

{

Alpha2[k][m][j]=(Alpha1[k][m][j]-Alpha1[k][m-1][j])/2;

}

}

}

for(int k=0;k<XSize;k++)

{

for(int i=0;i<YSize;i++)

{

Alpha3[k][i][0]=(Alpha2[k][i][0]+Alpha2[k][i][ZSize-1])/2;

for(int l=1;l<ZSize;l++)

{

Alpha3[k][i][l]=(Alpha2[k][i][l]-Alpha2[k][i][l-1])/2;

}

}

}

}

double CDesignView::Funk1(double Xcoord, int cI, int cJ)

{

double SUMM=0; //Результат

double Iterat=0;//результат за одну итерацию

for(int k=0;k<XSize;k++)

{

if(Xcoord-Xdiv[k]+eps2!=0)//если знаменатель не равен 0

{

Iterat=Alpha3[k][cI][cJ]*(fabs(Xcoord-Xdiv[k])/(Xcoord-Xdiv[k]+eps2));

SUMM+=Iterat;

}

else //иначе применяем другой знаменатель

{

SUMM+=Alpha3[k][cI][cJ]*(fabs(Xcoord-Xdiv[k])/(Xcoord-Xdiv[k]+eps1));

}

}

return SUMM;

}

double CDesignView::Funk2(double Xcoord, double Ycoord, int cJ)

{

double SUMM=0; //Результат

double Iterat=0;//результат за одну итерацию

for(int i=0;i<YSize;i++)

{

if(Ycoord-Ydiv[i]+eps2!=0)//если знаменатель не равен 0

{

Iterat=Funk1(Xcoord,i,cJ)*(fabs(Ycoord-Ydiv[i])/(Ycoord-Ydiv[i]+eps2));

SUMM+=Iterat;

}

else //иначе применяем другой знаменатель

{

SUMM+=Funk1(Xcoord,i,cJ)*(fabs(Ycoord-Ydiv[i])/(Ycoord-Ydiv[i]+eps1));

}

}

return SUMM;

}

double CDesignView::Funk3(double Xcoord, double Ycoord, double Zcoord)

{

double SUMM=0; //Результат

double Iterat=0;//результат за одну итерацию

for(int j=0;j<ZSize;j++)

{

if(Zcoord-Zdiv[j]+eps2!=0)//если знаменатель не равен 0

{

Iterat=Funk2(Xcoord,Ycoord,j)*(fabs(Zcoord-Zdiv[j])/(Zcoord-Zdiv[j]+eps2));

SUMM+=Iterat;

}

else //иначе применяем другой знаменатель

{

SUMM+=Funk2(Xcoord,Ycoord,j)*(fabs(Zcoord-Zdiv[j])/(Zcoord-Zdiv[j]+eps1));

}

}

return SUMM;

}

Листинг 2.Код кусочно-постоянного оператора.

36

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]