- •Реферат
- •Введение
- •Обзор методик учета физических и геометрических характеристик тел.
- •Многомерные нелинейные операторы.
- •2.1 Обзор кусочно-линейных операторов.
- •Обзор кусочно-постоянных операторов
- •Методы выделения областей образца с постоянным характером физических свойств.
- •Методика синтеза многомерных кусочных операторов.
- •Кусочно-линейный оператор
- •Кусочно-постоянный оператор
- •Сходимость многомерных операторов.
- •Проведение эксперимента
- •Список литературы
- •Приложения Приложение 1. Листинг кода кусочно-линейного оператора.
- •Приложение 2. Листинг кода кусочно-постоянного оператора.
Список литературы
-
В.Н. Козлов, С.В. Хлопин. Математические и информационные модели теплофизических процессов. Санкт-Петербург, изд. Политехнического университета, 2010 г. 189 стр.
-
В.Н. Козлов, В.Е. Куприянов, В.С. Забородский. Вычислительные методы синтеза систем автоматического управления. Ленинград, изд. Ленинградского университета. 1989 г. 224стр.
-
Козлов В.Н., Хлопин С.В. Обобщенные модели теплопроводности. Материалы X Всероссийской конференции по проблемам науки и высшей школы Cб. Фундаментальные исследования в технических университетах». Санкт-Петербург. – СПб.: СПбГПУ, 2006. –578 с. Стр. 62-63.
-
Козлов В.Н., Магомедов К.А., Хлопин С.В. Операторно-функицональный метод моделирования тепловых процессов. Материалы VIII Всероссийской конференции по проблемам науки и высшей школы. Cб. «Фундаментальные исследования в технических университетах». Санкт-Петербург. – СПб.: СПбГПУ, 2004г, 394с. Стр. 15-17
-
Даугавет И.К. Теория приближенных методов. Линейные уравнения. Санкт-Петербург, изд. «БХВ-Петербург, 2006 год»
-
Самарский А.А, Вабищевич П.Н. Вычислительная теплопередача, Москва, изд. УРСС, 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.Код кусочно-постоянного оператора. |