Определение допускаемой изгибающей нагрузки воспринимаемой резьбовым соединением с резьбой Эдисона круглой
Основные подходы к математическому моделированию физических систем: понятие и основные этапы данного процесса, требования к нему. Численные методы расчета. Программная постановка задачи, реализованная на языке C#. Верификация, вычислительный эксперимент.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 29.11.2013 |
Размер файла | 750,1 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
material = mat;
}
public void setGU(int[] gu)
{
GU[0]=gu[0];
GU[1]=gu[1];
GU[2]=gu[2];
}
public int[] GetGU()
{
return GU;
}
public double[] X()
{
return x;
}
public double[] Y()
{
return y;
}
public int[] N()
{
return Num;
}
public void setN(int N, int j)
{
Num[j] = N;
}
public int Mat()
{
return material;
}
}
class matrixOperation
{
static public double[,] transposition(double[,] matr)
{
double[,] tMatr = new double[matr.GetLength(1), matr.GetLength(0)];
for (int i = 0; i < matr.GetLength(0); i++)
for (int j = 0; j < matr.GetLength(1); j++)
tMatr[j, i] = matr[i, j];
return tMatr;
}
static public double[,] summation(double[,] matrA, double[,] matrB)
{
double[,] mulMatr = new double[matrA.GetLength(0), matrB.GetLength(1)];
for (int i = 0; i < matrA.GetLength(0); i++)
for (int j = 0; j < matrA.GetLength(1); j++)
mulMatr[i, j] = matrA[i, j] + matrB[i, j];
return mulMatr;
}
static public double[,] multiplication(double[,] matrA, double[,] matrB)
{
double[,] mulMatr = new double[matrA.GetLength(0), matrB.GetLength(1)];
for (int i = 0; i < matrA.GetLength(0); i++)
for (int j = 0; j < matrB.GetLength(1); j++)
for (int k = 0; k < matrB.GetLength(0); k++)
mulMatr[i, j] += matrA[i, k] * matrB[k, j];
return mulMatr;
}
static public double[] multiplication(double[,] matrA, double[] vectorB)
{
double[] mulMatr = new double[matrA.GetLength(0)];
for (int i = 0; i < matrA.GetLength(0); i++)
for (int k = 0; k < vectorB.GetLength(0); k++)
mulMatr[i] += matrA[i, k] * vectorB[k];
return mulMatr;
}
static public double[,] multiplication(double[,] matrA, double Zn)
{
double[,] mulMatr = new double[matrA.GetLength(0), matrA.GetLength(1)];
for (int i = 0; i < matrA.GetLength(0); i++)
for (int k = 0; k < matrA.GetLength(1); k++)
mulMatr[i, k] = matrA[i, k] * Zn;
return mulMatr;
}
static public double[] gausSLAU(double[,] A, double[] B)
{
double[] X = new double[A.GetLength(0)];
int ln = A.GetLength(0);
for (int i = 0; i < ln; i++) //выполнение прямого хода Метода Гауса
{
if (Math.Abs(A[i, i]) < 0.000000001) //проверка стоит ли на главной диогонали 0
{
double maxEl = 0; //максимальный найденый элемент ниже нулевого
int ind = 0; //индекс строки с которой нужно произвести перестановку
for (int j = i; j < ln; j++) //если был найден 0
{
if (Math.Abs(A[j, i]) > maxEl) //выполняем поиско подходящей строки
{
maxEl = Math.Abs(A[j, i]);
ind = j;
}
}
if (ind!= 0)
{
double tmp = 0;
for (int j = 0; j < ln; j++) //перестановка строк
{
tmp = A[i, j];
A[i, j] = A[ind, j];
A[ind, j] = tmp;
}
tmp = B[i];
B[i] = B[ind];
B[ind] = tmp;
}
}
/*получение треугольной матрицы*/
for (int j = i + 1; j < ln; j++)
{
if (Math.Abs(A[j, i]) > 0.0000000001)
{
double lokKaf = A[j, i] / A[i, i]; //определение коэффициента домножения
for (int k = 0; k < ln; k++) //отнимание строк
{
A[j, k] = A[j, k] - A[i, k] * lokKaf;
}
B[j] = B[j] - B[i] * lokKaf;
}
}
}
/*-------обратный ход метода Гауса---------*/
try
{
double det = 1;
/*for (int i = 0; i < n; i++)
{
det *= A[i, i];
}*/
if (Math.Abs(A[ln - 1, ln - 1]) < 0.000000001)
{
if (Math.Abs(B[ln - 1]) < 0.000000001)
{
throw new Exception("Система имеет множество решений");
}
else
if (Math.Abs(det) < 0.000000001)
throw new Exception("Система не имеет решений, определитель равен 0");
}
X = new double[ln]; //инициализация массива ответов
for (int i = ln - 1; i >= 0; i--)
{
double h = B[i];// h присваиваем ответ из массива сил
for (int j = 0; j < ln; j++)
h = h - X[j] * A[i, j]; //вычетание элементов строки матрицы
X[i] = h / A[i, i];//h делим на коэффициент при иксу
}
}
catch (Exception ex) { MessageBox.Show(ex.Message); }
return X;
}
static public double[,] inverseMatrix(double[,] A)
{
double[,] B = new double[A.GetLength(0), A.GetLength(1)];
for (int i = 0; i < A.GetLength(0); i++)
B[i, i] = 1;
try
{
for (int i = 0; i < A.GetLength(0); i++) //выполнять цыкл пока не будет обработана вся матрица
{
if ((Math.Abs(A[i, i]) < 0.00001)) //проверка стоит ли на главной диогонали 0
{
double maxEl = 0;
int ind = 0;
for (int j = i; j < A.GetLength(0); j++) //если был найден 0
{
if (Math.Abs(A[j, i]) > maxEl) //выполняем поиско подходящей строки
{
maxEl = Math.Abs(A[j, i]);
ind = j;
}
}
if (ind!= 0)
{
for (int j = 0; j < A.GetLength(0); j++) //перестановка строк
{
double tmp = 0;
tmp = A[i, j];
A[i, j] = A[ind, j];
A[ind, j] = tmp;
tmp = B[i, j];
B[i, j] = B[ind, j];
B[ind, j] = tmp;
}
}
}
double kaf = A[i, i]; //преобразование элемента стоящего на главной доогонали в 1
if (Math.Abs(kaf) < 0.0000000000000001)
{
throw new Exception("Нельзя получить обратную матрицу");
}
for (int j = 0; j < A.GetLength(0); j++)
{
A[i, j] = A[i, j] / kaf;
B[i, j] = B[i, j] / kaf;
}
/*получение единичной матрицы*/
for (int j = 0; j < A.GetLength(0); j++)
{
if (i!= j && Math.Abs(A[j, i]) > 0.000000001)
{
double lokKaf = A[j, i] / A[i, i];
for (int k = 0; k < A.GetLength(0); k++)
{
A[j, k] = A[j, k] - A[i, k] * lokKaf;
B[j, k] = B[j, k] - B[i, k] * lokKaf;
}
}
}
}
}
catch (Exception ex) { MessageBox.Show(ex.Message); }
return B;
}
static public double det(double[,] A)
{
int ln = A.GetLength(0);
for (int i = 0; i < ln; i++) //выполнение прямого хода Метода Гауса
{
if (Math.Abs(A[i, i]) < 0.000000001) //проверка стоит ли на главной диогонали 0
{
double maxEl = 0; //максимальный найденый элемент ниже нулевого
int ind = 0; //индекс строки с которой нужно произвести перестановку
for (int j = i; j < ln; j++) //если был найден 0
{
if (Math.Abs(A[j, i]) > maxEl) //выполняем поиско подходящей строки
{
maxEl = Math.Abs(A[j, i]);
ind = j;
}
}
if (ind!= 0)
{
double tmp = 0;
for (int j = 0; j < ln; j++) //перестановка строк
{
tmp = A[i, j];
A[i, j] = A[ind, j];
A[ind, j] = tmp;
}
}
}
/*получение треугольной матрицы*/
for (int j = i + 1; j < ln; j++)
{
if (Math.Abs(A[j, i]) > 0.0000000001)
{
double lokKaf = A[j, i] / A[i, i]; //определение коэффициента домножения
for (int k = 0; k < ln; k++) //отнимание строк
{
A[j, k] = A[j, k] - A[i, k] * lokKaf;
}
}
}
}
double X = 1;
for (int i = 0; i < ln; i++)
X *= A[i, i];
return X;
}
}
}
Размещено на Allbest.ru
Подобные документы
Основные подходы к математическому моделированию макромолекул. Методы молекулярной динамики и Монте-Карло. Механическая модель молекулы. Применения компьютерного эксперимента. Механическая модель молекулы. Преимущества компьютерного моделирования.
реферат [44,9 K], добавлен 19.03.2009Основы классификации объектов, их типы и подходы к моделированию. Программные и технические средства, используемые в данном процессе. Этапы моделирования, их общее описание и значение: постановка задачи, разработка модели, компьютерный эксперимент.
реферат [36,3 K], добавлен 23.12.2014Анализ математической модели резьбового соединения с трапецеидальной резьбой. Разработка программы, выполняющей вычисление необходимого количества витков для восприятия осевой сжимающей нагрузки. Алгоритм проведения верификации. Инструкция пользователя.
курсовая работа [1,2 M], добавлен 19.01.2016Основные подходы к математическому моделированию решений дифференциальных краевых задач. Метод конечных разностей и элементов. Графическая схема алгоритма метода прогонки, программное обеспечение. Оператор конвективного переноса и одномерность задачи.
курсовая работа [999,6 K], добавлен 22.12.2015Численные методы линейной алгебры. Матричный метод. Методы Крамера и Гаусса. Интерации линейных систем. Интерации Якоби и Гаусса - Зейделя. Листинг программы. Численные методы в электронных таблицах Excel и программе MathCAD, Microsoft Visual Basic
курсовая работа [1,2 M], добавлен 01.06.2008Регулирование основных вопросов организации. Определение потребности в ресурсах. Выбор источников финансирования проекта. Выбор и обоснование оптимальной системы проектирования, основные этапы и особенности данного процесса. Работа в среде GanttProject.
курсовая работа [1,4 M], добавлен 25.09.2014Общие принципы построения и основные этапы проектирования корпоративной информационной системы. Архитектура и требования, предъявляемые к системе. Метод функционального моделирования SADT. Основные средства языка UML. Аппаратно-программная платформа.
дипломная работа [867,2 K], добавлен 20.05.2015Программная реализация настольного приложения с использованием языка программирования C#. Проектирование и структура пользовательского интерфейса, требования к нему и оценка функциональности. Разработка руководства пользователя и его использование.
курсовая работа [297,6 K], добавлен 10.03.2015Построение модели вычислительного центра: постановка задачи, составление моделирующей программы на языке GPSS, обоснование выбора моделирования. Анализ полученных данных и формирование выводов. Улучшение системы и моделирование процесса работы центра.
курсовая работа [671,6 K], добавлен 03.07.2011Понятие и основополагающие принципы сайтостроения, этапы и направления реализации данного процесса, используемое программное обеспечение и требования, предъявляемые к нему. Разработка сайта исследуемого предприятия, закономерности автоматизации.
курсовая работа [3,3 M], добавлен 26.05.2014