Определение допускаемой изгибающей нагрузки воспринимаемой резьбовым соединением с резьбой Эдисона круглой

Основные подходы к математическому моделированию физических систем: понятие и основные этапы данного процесса, требования к нему. Численные методы расчета. Программная постановка задачи, реализованная на языке 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

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.