Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Методические указания и пример расчета

Задание 2

 

 

Исследование равновесия твердого тела

 

Определить реакции опор твердого тела под действием заданных активных сил. При нахождении неизвестных сил сотавить уравнения равновесия и представить их в матричной форме. Решить систему линейных уравнений с помощью алгоритмической программы. Выполнить проверку путем составления и решения системы уравнений для новой системы координат.

 

Методические указания и пример расчета

Дано: Плита, закрепленная на шести стержнях, находится в равновесии под действием двух активных сил: составляющей угол с осью x в плоскости (z,x) и силы тяжести Известны размеры

Определить: усилия в стержнях

Выполнить проверку.

 

 

Рис. 1 Схема заданных сил и закрепления плиты

 

Решение:

Полагая стержни растянутыми, приложим к плите усилия со стороны отброшенной части стержней с нижними опорами (Рис. 2). Обозначим два острых угла , которые наклонные стержни составляют с вертикалью. Определим их значения в градусах:

 

Рис. 2 Схема заданных сил и реакций связей

Составим систему уравнения равновесия в осях (x,y,z):

Перенесем активные силы в правую часть уравнений, меняя при этом знак.

 

Представим систему уравнений равновесия в матричной форме

 

 

Обозначим матрицу в левой части системы

 

 

;

 

вектор-столбец в правой части системы

 

;

и вектор-столбец неизвестных

 

Тогда система уравнений запишется в компактной форме

 

Решение системы сводится к отысканию вектор-столбца неизвестных реакций стержней Для определения реакций стержней воспользуемся методом Гаусса решения систем линейных уравнений методом исключения. Существуют стандартные программы решения системы линейных алгебраических уравнений методом Гаусса без нахождения обратной матрицы к матрице жесткости (SIMQ “Fortrun”). Используем аналогичную подпрограмму на языке C#. Текст кода, размещенного в отдельном классе, добавленном в проект, выглядит так:

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

 

namespace Равновесие_системы_сил

{

class ClassSIMQ

{

double[] A, B;

 

public void SIMQ(double[,] K, ref double[] P, int N, ref int KS)

{

 

A = new double[N * N + 1];

B = new double[N + 1];

int sd = 0;

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

{

B[i + 1] = P[i];

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

{

sd++;

A[sd] = K[j, i];

}

}

int JY, IT, J, IJ, IMAX = 0, I, I1, k, I2, IQS, IX, JX, IXJX, JJX, IXJ, NY, IB, IA, IC;

double TOL = 0, BIGA = 0, SAVE;

KS = 0;

int JJ = -N;

for (J = 1; J <= N; J++)

{

JY = J + 1;

JJ = JJ + N + 1;

BIGA = 0.0;

IT = JJ - J;

for (I = J; I <= N; I++)

{

IJ = IT + I;

if (Math.Abs(BIGA) - Math.Abs(A[IJ]) < 0)

{

BIGA = A[IJ];

IMAX = I;

}

}//30

if (Math.Abs(BIGA) - TOL <= 0)

{

KS = 1;

return;

}

I1 = J + N * (J - 2);

IT = IMAX - J;

for (k = J; k <= N; k++)

{

I1 = I1 + N;

I2 = I1 + IT;

SAVE = A[I1];

A[I1] = A[I2];

A[I2] = SAVE;

A[I1] = A[I1] / BIGA;

}//50

SAVE = B[IMAX];

B[IMAX] = B[J];

B[J] = SAVE / BIGA;

if ((J - N) == 0)

{

break;

}

IQS = N * (J - 1);

for (IX = JY; IX <= N; IX++)

{

IXJ = IQS + IX;

IT = J - IX;

for (JX = JY; JX <= N; JX++)

{

IXJX = N * (JX - 1) + IX;

JJX = IXJX + IT;

A[IXJX] = A[IXJX] - A[IXJ] * A[JJX];

}

B[IX] = B[IX] - B[J] * A[IXJ];

}

}//65

NY = N - 1;

IT = N * N;

for (J = 1; J <= NY; J++)

{

IA = IT - J;

IB = N - J;

IC = N;

for (k = 1; k <= J; k++)

{

B[IB] = B[IB] - A[IA] * B[IC];

IA = IA - N;

IC = IC - 1;

}

}//80

 

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

{

P[i] = B[i + 1];

}

 

}

 

}

}

 

Единственная форма проекта в конструкторе имеет вид:

 

Рис. 3 Форма проекта в конструкторе

 

При запуске проекта на выполнение и подстановке исходных данных результат расчетов появляется в нижней таблице:

 

Рис. 4 Форма проекта при запуске программы

 

Клиентский код формы:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.IO;

 

namespace Равновесие_системы_сил

{

public partial class Form1: Form

{

double[,] MatrA;

double[] MatrB;

 

int i, j;

int m = 6;

string st;

List<string> list_st = new List<string>();

string[] St;

public Form1()

{

InitializeComponent();

}

 

private void выходToolStripMenuItem_Click(object sender, EventArgs e)

{

Close();

}

 

private void сохранитьВФайлToolStripMenuItem_Click(object sender, EventArgs e)

{

// Сохранение в файл исходной матрицы

 

 

MatrA = new double[m, m];

 

for (i = 0; i < m; i++)

{

for (j = 0; j < m; j++)

MatrA[i, j] = Convert.ToDouble(dataGridView3.Rows[i].Cells[j].Value);

 

}

if (saveFileDialog1.ShowDialog() == DialogResult.OK)

{

FileStream FS = saveFileDialog1.OpenFile() as FileStream;

StreamWriter SR = new StreamWriter(FS);

 

for (i = 0; i < m; i++)

{

st = null;

for (j = 0; j < m; j++)

{

st = st + MatrA[i, j].ToString() + " ";

}

SR.WriteLine(st);

}

SR.Close();

FS.Close();

}

 

}

 

private void считатьИзФайлаToolStripMenuItem_Click(object sender, EventArgs e)

{

// Считывание из файла исходной матрицы

if (openFileDialog1.ShowDialog() == DialogResult.OK)

{

FileStream FS = openFileDialog1.OpenFile() as FileStream;

StreamReader SR = new StreamReader(FS);

 

dataGridView3.Rows.Clear();

 

list_st.Clear();

while (SR.Peek() > 0)

{

list_st.Add(SR.ReadLine());

//dataGridView1

dataGridView3.Rows.Add();

}

St = list_st.ToArray();

 

MatrA = new double[m, m];

 

 

for (i = 0; i < m; i++)

{

 

St[i] = St[i].Replace(".", ",");;

//Разбиение строки St на подстроки aa

string[] aa = St[i].Split(" \t".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);

 

 

for (j = 0; j < m; j++)

{

//Заполнение матрицы и таблицы

MatrA[i, j] = Convert.ToDouble(aa[j]);

dataGridView3.Rows[i].Cells[j].Value = MatrA[i, j];

}

}

 

SR.Close();

FS.Close();

}

}

 

private void cToolStripMenuItem_Click(object sender, EventArgs e)

{

// Считывание из файла вектор-столбца

if (openFileDialog1.ShowDialog() == DialogResult.OK)

{

FileStream FS = openFileDialog1.OpenFile() as FileStream;

StreamReader SR = new StreamReader(FS);

 

dataGridView2.Rows.Clear();

 

list_st.Clear();

while (SR.Peek() > 0)

{

list_st.Add(SR.ReadLine());

//dataGridView1

dataGridView2.Rows.Add();

}

St = list_st.ToArray();

 

MatrB = new double[m];

 

 

for (i = 0; i < m; i++)

{

 

St[i] = St[i].Replace(".", ",");;

 

//Заполнение матрицы и таблицы

MatrB[i] = Convert.ToDouble(St[i]);

dataGridView2.Rows[i].Cells[0].Value = MatrB[i];

}

SR.Close();

FS.Close();

}

 

}

 

private void сохранитьВВайлToolStripMenuItem_Click(object sender, EventArgs e)

{

// Сохранение в файл вектор-столбца

 

 

MatrB = new double[m];

 

for (i = 0; i < m; i++)

{

 

MatrB[i] = Convert.ToDouble(dataGridView2.Rows[i].Cells[0].Value);

 

}

if (saveFileDialog1.ShowDialog() == DialogResult.OK)

{

FileStream FS = saveFileDialog1.OpenFile() as FileStream;

StreamWriter SR = new StreamWriter(FS);

 

for (i = 0; i < m; i++)

{

st = null;

 

st = MatrB[i].ToString() + " ";

 

SR.WriteLine(st);

}

SR.Close();

FS.Close();

}

}

 

private void вычислениеНеизвестныхToolStripMenuItem_Click(object sender, EventArgs e)

{

int KS = 0;

double[] MB = new double[6];

for (i = 0; i < m; i++)

{

 

MB[i]=MatrB[i];

 

}

ClassSIMQ S = new ClassSIMQ();

S.SIMQ(MatrA, ref MB, m, ref KS);

label1.Text = "Код ошибки равен " + KS.ToString();

for (i = 0; i < m; i++)

{

 

//Заполнение таблицы S

 

dataGridView1.Rows[0].Cells[i].Value = MB[i];

}

}

}

}

 

 

Для проверки правильности решения задачи перенесем систему координат в нижний ярус конструкции и составим новую систему уравнений в осях :

 

 

Возможно использовать эти уравнения для подстановки в них найденных сил, при правильном решении, уравнения должны обращаться в тождества. Другой способ проверки заключается в повторном нахождении неизвестных из новых уравнений равновесия в системе координат и сравнении их с ранее найденными в системе координат . Используем второй способ.

Перенесем активные силы в правую часть уравнений, меняя при этом знак.

 

 

Представим систему уравнений равновесия в матричной форме

 

 

 

Обозначим матрицу в левой части системы

 

 

;

 

вектор-столбец в правой части системы

 

;

Результат вычислений представлен на форме:

 

Рис. 5 Форма проекта с проверкой

 

Есть отклонения в результатах расчетных усилий , , которые менее 0,2 % от усредненных значений искомых сил.

 

Варианты заданий

Варианты: 1, 2, 3, 4 (Рис. 6)

Дано: Плита, закрепленная на шести стержнях, находится в равновесии под действием двух активных сил: составляющей угол с осью x и лежащей в плоскости параллельной плоскости (z,x) и силы тяжести Известны размеры

Вариант 1: Сила F приложена в точке A;

Вариант 2: Сила F приложена в точке B;

Вариант 3: Сила F приложена в точке C;

Вариант 4: Сила F приложена в точке D

 

Определить: усилия в стержнях

Выполнить проверку.

 

 

Рис. 6. Схема к вариантам заданий 1,2,3,4.

 

 

Варианты: 5,6,7,8 (Рис. 7)

Дано: Плита, закрепленная на шести стержнях, находится в равновесии под действием двух активных сил: составляющей угол с осью y и лежащей в плоскости параллельной плоскости (y,z) и силы тяжести Известны размеры

Вариант 5: Сила F приложена в точке A;

Вариант 6: Сила F приложена в точке B;

Вариант 7: Сила F приложена в точке C;

Вариант 8: Сила F приложена в точке D

 

Определить: усилия в стержнях

Выполнить проверку.

 

Рис. 7. Схема к вариантам заданий 5,6,7,8.

 

Варианты: 9,10,11,12. (Рис. 8)

Дано: Плита, закрепленная на шести стержнях, находится в равновесии под действием двух активных сил: составляющей угол с осью xи лежащей в плоскости (x,y) и силы тяжести Известны размеры

Вариант 9: Сила F приложена в точке A;

Вариант 10: Сила F приложена в точке B;

Вариант 11: Сила F приложена в точке C;

Вариант 12: Сила F приложена в точке D

 

Определить: усилия в стержнях

Выполнить проверку.

 

 

 

Рис. 8. Схема к вариантам заданий 9,10,11,12.

 

Содержание отчета

1. Постановка задачи для конкретного варианта.

2. Расчетные уравнения в развернутой и в матричной форме (в символьном виде и с подстановкой численных значений). Сопровождая уравнения подробными расчетными схемами.

3. Текст клиентского кода программы.

4. Результаты выполнения программы.


<== предыдущая | следующая ==>
 | Как в таком случае должна одевать мама малыша?

Date: 2015-10-18; view: 282; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.007 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию