ГДЗ №1 Вариант 3, страница 2
Описание файла
Документ из архива "ГДЗ №1 Вариант 3", который расположен в категории "". Всё это находится в предмете "основы метода конечных элементов" из 7 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "курсовые/домашние работы", в предмете "основы метода конечных элементов" в общих файлах.
Онлайн просмотр документа "ГДЗ №1 Вариант 3"
Текст 2 страницы из документа "ГДЗ №1 Вариант 3"
k[6] = k[7] = k[8] = k[15] =k[16] = k[17] = k[24] = k[25] = k[26] = k[44] =k[45] = k[46] = k[64] = k[65] =k[66] =10*lambda*B / 4*A_ ;
k[43] =k[63] = (B/8 + b_/12)*lambda*10 / A_;
k[38] = k[39] = k[40] = k[41] = k[42] =k[58] = k[59] = k[60] = k[61] = k[62] = 10*b_*lambda / (6* A_) ;
k[48] = k[49] = k[50] = k[51] = k[52] =k[53] = 6*lambda*A_ / (10*b_ ) ;
k[28] = k[29] = k[30] = k[31] = k[32] =k[33] =k[68] = k[69] = k[70] = k[71] = k[72] =k[73] = A_*6*lambda / (b_*20) ;
h[78] = h[83] = a_g*L*A_/20 ;
h[79] = h[80] =h[81] =h[82] =a_g*L* A_/10 ;
k[84] = k[85]=10*b_*lambda / (12* A_) ;
6) Составляем матрицу .
Выпишем несколько элементов матрицы в качестве примера:
,с , , .
7) Решаем СЛАУ вида: , где (правая часть ) имеет вид
Решение СЛАУ реализоваyо на языке C++. СЛАУ решается при помощи метода Холецкого .
Функция, реализующая решение СЛАУ методом Холецкого:
void xoleckii(double**a)
{ double **l_matrix;
l_matrix= new double*[n];
for (int i(1); i < n; i++) l_matrix[i] = new double[m];
//1
l_matrix[1][1] = sqrt(a[1][1]);
//2
for (int j = 2; j < n; j++) l_matrix[j][1] = a[j][1] / l_matrix[1][1];
for (int i = 2; i < n; i++)
{
double sum = 0;
for (int p = 1; p <= i - 1; p++)
{
sum += pow(l_matrix[i][p], 2);
}
l_matrix[i][i] = sqrt(a[i][i] - sum);
///////////////
for (int j= i+1; j < n; j++)
{
double sum = 0;
for (int p = 1; p <= i - 1; p++)
{
sum += l_matrix[i][p] * l_matrix[j][p];
}
l_matrix[j][i] = (a[j][i] - sum) / l_matrix[i][i];
}
}
double *b = new double[n];
for (int i = 1; i < n; i++) b[i] = 0;
b[5] = k[78] * T+q*B*L/8;
b[10] = k[29] * T;
b[15] = k[80] * T;
b[20] = k[81] * T;
b[25] = k[82] * T;
b[30] = k[83] * T;
b[1] = q*B*L / 8 + q*A*L/20;
b[2] = q*B*L / 4;
b[3] = q*B*L / 4;
b[4]= q*B*L / 4;
b[6] = b[11] = q*A*L/10;
b[16] = q*A*L/20 + q*b_*L/12;
b[31] = q*b_*L / 6;
b[34] = q*b_*L / 6;
b[37] = q*b_*L / 6;
b[40] = q*b_*L / 6;
b[43] = q*b_*L / 6;
b[46] = q*b_*L / 12;
double *x = new double[n];
x[1] = b[1] / l_matrix[1][1];
for (int i = 2; i < n; i++)
{
x[i] = b[i];
for (int j = 1; j < i; j++)
{
x[i] -= l_matrix[i][j] * x[j];
}
x[i] /= l_matrix[i][i];
}
for (int i(1); i < n; i++)
{
for (int j(i); j < m; j++)
{
double buf = l_matrix[i][j];
l_matrix[i][j] = l_matrix[j][i];
l_matrix[j][i] = buf;
}
}
for (int i(1); i<n; i++)
{
b[i] = x[i];
}
x[n - 1] = b[n - 1] / l_matrix[n - 1][m - 1];
for (int i = n - 2; i >= 1; i--)
{
x[i] = b[i];
for (int j = m - 1; j > i; j--)
{
x[i] -= l_matrix[i][j] * x[j];
}
x[i] /= l_matrix[i][i];
}
for (int i(1); i<n; i++)
{
cout << "T[" << i << "]_=" << x[i] << endl;
}
8) При получим:
35